unable to create new native thread

Status
Nicht offen für weitere Antworten.
M

me.toString

Bekanntes Mitglied
Ich habe eine Anwendung, die in kürzester Zeit über 20000 Datenpaare an den Kunden schicken muss. Dazu wird u.a. eine Bibliothek des Kunden verwendet, welche das rauschicken der Daten für mich übernimmt - und natürlich hab ich dafür keine sourcen ... kaum Doku ...
Wenn das Programm eine Weile gelaufen ist, bricht alles mit der Meldung:
Exception in thread "Thread-63045" java.lang.OutOfMemoryError: unable to create new native thread
ab. Die Zahl variiert jedes mal. Die Meldug kommt meist dann, wenn ich einen Java-Thread starten will, der aber dann in der Fremdibliothek "verschwindet" .... also ich hab keine Ahnung viele Threads von der Bibo dann noch aufegemacht werden. Eins weiß ich aber noch von der Bibo ... sie nenutzt nativen Code, der als .so -Bibo im System liegt.
Die max. Thread-Anzahl des Systems (Linux) haben wir schon extrem hochgeschraubt ... daran kannes nicht mehr liegen. gibt es sowas für die JVM auch - also ein begrenzung wieviele Threads gleichzeit laufen dürfen??

ehli
 
Wildcard

Wildcard

Top Contributor
Du bekommst eine OutOfMemoryException, d.h. der Heap der VM ist bei der von dir definierten Grenze angelangt.
Die maximale Größe des Heaps kannst du über den VM Parameter Xmx festlegen.
 
M

me.toString

Bekanntes Mitglied
Am Heap liegt's nicht. Den hab ich mit einem Profiler überprüft ... der steigt nicht über 64MB ... und ich habe ihm 1G gegeben.
 
Wildcard

Wildcard

Top Contributor
Ist natürlich möglich das Java einen speziellen Speicherbereich für native Threads reserviert der gesondert festgelegt wird.
Da kann dir eventuell Google helfen.
 
M

Murray

Top Contributor
Die Begrenzung könnte durch die für die einzelnen Threads reservierten Stacks gegeben sein; ich meine mich zu erinnern, dass Heap + (Anzahl der Threads * Thread-Stack-Size) einen gewissen Grenze (2GB?) nicht überschreiten dürfen. Demnach könnte man die Anzahl der maximal möglichen Threads erhöhen, indem man den Heap kleiner macht, oder aber - mit "-Xss"-Option - den einzelnen Threads kleinere Stacks zuweist.
 
M

me.toString

Bekanntes Mitglied
Das wäre auf jeden Fall einen Versuch wert.
Eben hab ich gelesen, dass jeder Thread auch einen einen "Stackfür native Methoden" besitzt - aber nirgends wird das Thema nährt beleuchtet ... weiß jemand von euch, ob man die Größe dieses Stacks beeinflussen kann ?
 
M

Murray

Top Contributor
Diesen Effekt kann ich zumindest unter Windows erkennen. Folgendes Testprogramm:
Code:
public class MaxThreads {

	public MaxThreads( int numThreads) {
		
		for ( int i=0; i<numThreads; i++) {
			System.out.println( "#" + i);
			try {
				new Thread( new Runnable() {
					public synchronized void run() {
					
						try {
							wait();
						} catch ( Exception e) {
							e.printStackTrace();
						}
					}
				}, "Thread#" + i).start();
			} catch ( Throwable e) {
				System.out.println();
				System.out.println( "Could not create Thread #" + i + ": " + e);
				System.exit( 1);
			}
			
		}
		
		System.out.println( "done");
		System.exit( 0);
		
	}

	public static void main(String[] args) {
		new MaxThreads( 10000);

	}

}

java -Xss128K - Xms512M -Xmx512M MaxThreads -> OutOfMemory nach 5464 Threads
java -Xss256K - Xms512M -Xmx512M MaxThreads -> OutOfMemory nach 1397 Threads
java -Xss128K - Xms1024M -Xmx1024M MaxThreads -> OutOfMemory nach 3502Threads
java -Xss256K - Xms1024M -Xmx1024M MaxThreads -> OutOfMemory nach 885 Threads
java -Xss128K - Xms1536M -Xmx1536M MaxThreads -> OutOfMemory nach 1510 Threads
java -Xss256K - Xms1536M -Xmx1536M MaxThreads -> OutOfMemory nach 377 Threads


Man sieht also:
1. je besser man es mit dem Heap meint, desto weniger Threads sind möglich.
2. durch Reduzieren des Thread-Stacks kann man mehr Threads erzeugen
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
D unable to create new native thread Allgemeine Java-Themen 1
M SQL-Developer Installation: Unable to launch the Java Virtual Machine Located at path msvcr100.dll Allgemeine Java-Themen 1
A Eclipse - Fehler beim "RUN" - "Unable to Launch - The selection cannot be launched" Allgemeine Java-Themen 6
N GPIB - Fehler: Unable to open device Allgemeine Java-Themen 1
N Unable to convolve src image Allgemeine Java-Themen 7
T jmf - Immer "Unable to handle fo rmat:" Allgemeine Java-Themen 2
I Error: Unable to realize com.sun.media.amovie.AMController Allgemeine Java-Themen 3
V Unable to pop operand off an empty stack Allgemeine Java-Themen 2
T Hilfe!!! Fehlermeldung... "unable..." Allgemeine Java-Themen 2
V Scheinbar zufällig hin und wieder: Can't create an ImageOutputStream! Allgemeine Java-Themen 8
F Create Befehl mit variierender Spaltenanzahl/Spaltenname Allgemeine Java-Themen 5
W JavaCC to create my only syntax Allgemeine Java-Themen 5
M Cannot create a generic array of T Allgemeine Java-Themen 5
J Post: #1could not create the java virtual machine etc Allgemeine Java-Themen 6
S could not create the java virtual machine Allgemeine Java-Themen 3
F ImageIO cant create InputStream Allgemeine Java-Themen 9
K Could not create the Java Virtual Machine Allgemeine Java-Themen 1
T Wie lookup-and-create-on-demand umsetzen? Allgemeine Java-Themen 6
RalleYTN Classpath Native Dateien(DLL, SO, JNILIB) Allgemeine Java-Themen 2
A Linux: Native Library mit Rootrechten ohne Prozess mit sudo zu starten Allgemeine Java-Themen 1
F Java Native/Shared Library (.so) laden macht Probleme Allgemeine Java-Themen 3
reibi JNA - Native Acess - Library Path Allgemeine Java-Themen 2
G Native Library / Fehler beim Laden der .so/.dll Datei Allgemeine Java-Themen 17
W Java Native Interface und "mp3player" Allgemeine Java-Themen 3
P Eclipse Java Native Interface-Problem Allgemeine Java-Themen 8
L Native Bilbiothek exportieren Allgemeine Java-Themen 10
G RXTX native library unter Linux in jar build angeben Allgemeine Java-Themen 4
G Webstart Java Web Start und native Bibliotheken Allgemeine Java-Themen 3
KrokoDiehl JNI: native im Interface Allgemeine Java-Themen 4
KrokoDiehl thread-unsichere, native Bibliotheken Allgemeine Java-Themen 11
M Java Web Start - Native DLL einbinden Allgemeine Java-Themen 2
M Java native C# Allgemeine Java-Themen 2
F GCJ bzw. native Java-Programme Allgemeine Java-Themen 7
T Native Library ausliefern Allgemeine Java-Themen 12
J Native Library einbinden Allgemeine Java-Themen 17
B Native DLL zweimal laden: System.load(sPath); Allgemeine Java-Themen 5
S native methoden in try / catch ? Allgemeine Java-Themen 3
L Native Threads unter Linux? Allgemeine Java-Themen 2
G Java-Befehle Native und Static Allgemeine Java-Themen 2
minzel Java Native Interface Allgemeine Java-Themen 9
S komplett in native kompilieren Allgemeine Java-Themen 6
G jar archiv und native klassen (pfad angabe) Allgemeine Java-Themen 2
C Java Native binding Code will nicht so ganz Allgemeine Java-Themen 2
M Threads (Native oder Green) Allgemeine Java-Themen 2

Ähnliche Java Themen

Anzeige

Neue Themen


Oben