RAM Speicher mit Java/python überlasten?

3 Antworten

den arbeitsspeicher auf 100% zu bringen

Was sind 100%? Ein modernes Betriebssystem arbeitet mit virtuellem Speicher und entscheidet selbst, wie es diesen verwaltet. Wenn das physische RAM dabei knapp wird, kann es Teile davon Richtung Festplatte auslagern (swapping/paging) oder auch an einem gewissen Punkt einen zu großen Prozess abschießen.

Aber davon abgesehen.

Grob gesagt verbraucht jede Variable RAM - logisch, irgendwo muss sie ja gespeichert sein. Es reicht also, in einer Endlosschleife irgendeine dynamisch erweiterbare Datenstruktur zu befüllen - etwa eine Liste. Wie das in Python geht, solltest du ja wissen. Probier's aus und beobachte dabei den Task Manager oder wie das halt bei deinem Betriebssystem heißt.

Bei Java ist es grundsätzlich genauso, es gibt allerdings eine Obergrenze der JVM, was den Heap betrifft - d.h. der Prozess kann nicht unkontrolliert ins Unendliche wachsen. Man kann nun entweder beim Aufruf der JVM den Parameter -Xmx entsprechend groß setzen - oder, eher nur für Fortgeschrittene, abseits des Java-Heaps arbeiten. Auch hier kann es aber Limits des Betriebssystems geben die eventuell erreicht werden, bevor das physische RAM überhaupt ans Limit kommt.

Versuch macht kluch.

Ram weiß ich garnicht.. vielleicht dauernd files erzeugen... CPU lass ich immer mit PI Berechnungen überlasten...

du machst nen prozess, welcher rekursiv fibonacci zahlen berechnet, in welchen er in einer while True schleife neue threads erställt und jeder thread erst endet, wenn die fibonacci berechnung stackoverflowed, welche du try/catched.

wenn der thread schließt returned er jede zahl die er berechnet hat und speichert jede als string in einer liste im main thread

also, jeder thread rechnet fibo(1) dann fibo(2) usw.

dann noch mit dem Task manager die prozesspriorität auf echtzeit setzten und der computer hängt.


martinJgDe  14.12.2020, 19:36

quasi in pseudocode als kommentar weil gutefragehurensöhne sperren bearbeitung:

```

if __name__ == "__main__"

threadlist = []

numlist = []

while True:

threadlist.add(Threading.startthread(target = fibo)

threadlist[len(threadlist)].start()

# check for thread returns

def fibo:

numlist = []

try:

#calculate fibo with growing numbers in while true, store in numlist

except:

#return that to the main thread

```

0