Ich bin immer Ungültige maximale heap-Größe wenn ich Xmx und agentlib
Hier sind die Argumente, die ich benutze:
-Xmx1024m -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=11999
Den -Xmx1024m funktionieren, ohne die -agentlib, und die -agentlib funktioniert ohne Xmx. Kann man die max-heap-Größe während der Verwendung der agentlib?
Meine jar-Datei wird immer gestartet über C-code:
execlp(myJavaPath, myJavaPath, myDebugOptions,"-DFBLog4j=true","-jar","myJar.jar", NULL);
Wo myDebugOptions enthalten, die " char* "-Xmx1024m -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=11999". Wenn ich versuche, führen Sie diesen gleichen Befehl über die Kommandozeile (in Solaris 10, JVM 1.6.0_17) funktioniert es einwandfrei.
- meinst du,der JVM nicht gestartet wird, wenn Sie diese beiden Optionen?
- welches JDK benutzt du ?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Übergibt man jede Kommandozeilen-argument, wie verschiedene Parameter zu execlp.
Die Befehlszeile, die Sie ausführen, wäre das gleiche wie das von einer Befehlszeile aus:
Das wird nicht funktionieren, entweder, im wesentlichen-Xmx und -agentlib übergeben bekommt als einziges argument.
Der Grund, warum das nicht funktionieren wird, weil -Xmx1024 und -agentlib: das sind zwei unterschiedliche Argumente. Beim aufrufen von execlp, die Sie benötigen, übergeben zu werden, als zwei verschiedene Argumente. Als ich execlp wie:
funktionierte es wie erwartet keine Fehler. Selbst diejenigen, myDebugOptions ein Leerzeichen enthielt, war es immer noch wenn man es als ein argument.
Wenn der von Ihnen definierte Speicherkapazität ist größer als dein system physischen Speicher dann diese Art von Fehler wird generiert.
update-Speicher nach den vorgegebenen t der physikalische Speicher.
ich versuchte dies und es funktionierte :