Entwickler-Ecke
Basistechnologien - Programm zur Belasstung des Arbeitsspeichers
will_lernen - Do 02.04.09 18:10
Titel: Programm zur Belasstung des Arbeitsspeichers
Ich soll ein Programm schreiben, dass das Arbeitsspeicher auslasten soll.
Ich habe es versucht mit einem Array der 100 000 000 Plätze lang ist. Damit werden 100 000 000 Plätze im Speicher mit 0 reserviert.
C#-Quelltext
1: 2:
| int[] myArray; myArray = new int [100000000]; |
mehr geht's nicht.
Meine Frage ist warum es nicht mehr geht?
und wie mache ich das am besten, dass das gesamte Speicher für eine gewiesse Zeit belastet wird?
Danke im Voraus.
Moderiert von
Christian S.: C#-Tags hinzugefügt
jaenicke - Do 02.04.09 18:28
Hallo und :welcome: !
Du kannst versuchen immer mehr Arbeitsspeicher zu reservieren, aber den gesamten geht ja nicht, denn ein Teil wird ja auf jeden Fall vom System benötigt. D.h. wenn du neuen anforderst, landet der alte reservierte Speicher schon in der Auslagerungsdatei auf der Festplatte.
Was hat das denn für einen Sinn? Das macht das System extrem langsam, und dann?
will_lernen - Do 02.04.09 22:17
jaenicke hat folgendes geschrieben : |
Hallo und :welcome: !
Du kannst versuchen immer mehr Arbeitsspeicher zu reservieren, aber den gesamten geht ja nicht, denn ein Teil wird ja auf jeden Fall vom System benötigt. D.h. wenn du neuen anforderst, landet der alte reservierte Speicher schon in der Auslagerungsdatei auf der Festplatte.
Was hat das denn für einen Sinn? Das macht das System extrem langsam, und dann? |
Es muss auch keinen Sinn haben. Das ist nur zum Testzweck.
Wenn ich das Programm, bzw. dieses Array 16 mal laufen lasse. d.h. die Eingabeaufforderungsfenster ist bei mir 16 mal geöffnet, dann Zeigt der Task Manager volle Belegung.
Ich will das aber in einer Programm machen unf nicht in 16.. )))
Kha - Fr 03.04.09 10:21
will_lernen hat folgendes geschrieben : |
| Meine Frage ist warum es nicht mehr geht? |
"Nicht mehr gehen" heißt wohl, dass du sofort eine OutOfMemoryException bekommst. Du musst den Speicher sukzessive auslasten. Erstelle also immer mehr deiner Monster-Arrays und sammle sie z.B. in einer
List<int[]>, bis die Exception kommt. Ohne die Liste würde der Garbage Collector spätestens[*] beim OOM die Arrays aufräumen.
[*]Wen's interessiert: Da die Arrays auf den Large Object Heap kommen, werden sie von einer gewöhnlichen Gen0-Collection nicht erfasst. imo ^^
Delete - Sa 04.04.09 11:46
Kha hat folgendes geschrieben : |
| Wen's interessiert: Da die Arrays auf den Large Object Heap kommen, werden sie von einer gewöhnlichen Gen0-Collection nicht erfasst. imo ^^ |
Kannst Du das bitte für mich als Laien übersetzen? Ich bin bei diesem Thema Laie aber interessieren tut es mich schon.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!