Ich wollte für ein neuesProjekt mal rausfinden, wieviel Threads Java maximal verwalten kann. Also habe ich folgendes Programm erstellt
Alles anzeigen
Alles anzeigen
So jar, erzeugt. Jetzt lass ich das Programm laufen:
Bekomm ich ab 5706 Threads einen java.lang.OutOfMemoryError. Im Speicher werden 115MB belegt. Da denk ich mir doch: oka setzt einfch mal die JavaHeapSize hoch
Zu meiner Verwunderung kamen dort weniger maximal Threads heraus. Da ist nämlich schon bei 4285 schluß. Und zu meiner dopelten Verwunderung wurden auch bei diesem Programmdurchlauf 115MB von der JVM belegt.
Eigentlich hatte ich jetzt damit gerechnet: Größerer Heap = Größerer Speicherverbrauch = Mehr maximale Threads.
Nur irgendwo scheine ich ja einen Denkfehler zu machen...
Quellcode
Quellcode
So jar, erzeugt. Jetzt lass ich das Programm laufen:
java -jar threads.jar
Bekomm ich ab 5706 Threads einen java.lang.OutOfMemoryError. Im Speicher werden 115MB belegt. Da denk ich mir doch: oka setzt einfch mal die JavaHeapSize hoch
java -Xmx512M -jar threads.jar
Zu meiner Verwunderung kamen dort weniger maximal Threads heraus. Da ist nämlich schon bei 4285 schluß. Und zu meiner dopelten Verwunderung wurden auch bei diesem Programmdurchlauf 115MB von der JVM belegt.
Eigentlich hatte ich jetzt damit gerechnet: Größerer Heap = Größerer Speicherverbrauch = Mehr maximale Threads.
Nur irgendwo scheine ich ja einen Denkfehler zu machen...