Nichtverfügbarkeit von nativem Speicher unter Windows

Der in der Java Virtual Machine (VM) aktive Betriebssystemprozess verfügt nicht über genug Speicher zur Erstellung der Speicherauszugsdatei.

Manchmal kann die VM unter Windows keine Speicherauszugsdatei erstellen, da für den Betriebssystemprozess, der die VM ausführt, nicht genügend nativer Speicher verfügbar ist. Die folgende Ausgabe könnte beispielsweise geschrieben werden inSTDERR:
Unhandled exception
Type=Segmentation error vmState=0x00000001
J9Generic_Signal_Number=00000004 ExceptionCode=c0000005 ExceptionAddress=707D1A95 ContextFlags=0001003f
Handler1=7064F300 Handler2=7134EF90 InaccessibleAddress=00000000
EDI=01F1FB78 ESI=00000000 EAX=00001388 EBX=003BBA18
ECX=00000000 EDX=01DB0048
EIP=707D1A95 ESP=01F1FB5C EBP=01F1FB68 EFLAGS=00010246
GS=002B FS=0053 ES=002B DS=002B
Module=C:\test\native\OOMCrash\oom.dll
Module_base_address=707D0000 Offset_in_DLL=00001a95
Target=2_60_20110521_082820 (Windows 7 6.1 build 7601 Service Pack 1)
CPU=x86 (2 logical CPUs) (0x12e54d000 RAM)
----------- Stack Backtrace -----------
---------------------------------------
JVMDUMP006I Processing dump event "gpf", detail "" - please wait.
JVMDUMP032I JVM requested System dump using 'C:\test\native\OOMCrash\core.20110525.134230.4148.0001.dmp' 
in response to an event
JVMDUMP012E Error in System dump: Dump failed - could not load library DBGHELP.DLL
Möglicherweise wird auch der folgender Fehler angezeigt:
JVMDUMP012E Error in System dump: Dump failed - could not begin dump thread

Die Bibliothek DBGHELP.DLL ist für die VM erforderlich, um eine Systemspeicherauszugsdatei unter Windows zu generieren, und wird im SDK bereitgestellt. Kann diese Bibliothek nicht geladen werden, deutet dies darauf hin, dass der Prozess den verfügbaren nativen Hauptspeicher aufgebraucht hat.

Unter diesen Umständen können Sie einen Windows-Debugger wie WinDbgoder Visual Studio oder den Task-Manager von Windows verwenden, um eine Systemspeicherauszugsdatei zu generieren. Diese Debugger laden die erforderlichen Bibliotheken in einen separaten Prozess. Möglicherweise müssen Sie die VM zwingen, an der Fehlerstelle anzuhalten, um mit diesen Debuggern eine Dump-Datei zu erhalten. Besteht der Fehler in einem Absturz (wie im vorherigen Beispiel), können Sie die Befehlszeilenoption -Xrs angeben. Diese Option bewirkt, dass das Betriebssystem die VM stoppt und ein Windows-Dialogfeld anzeigt, wenn der Absturz auftritt. Wenn der Fehler nicht abstürzt, z. B. wenn die VM eine Speicherauszugsdatei für eine Java™ -Ausnahmebedingung erstellt hat, können Sie die Auslöseraktion 'sleep' für einen Tracepunkt verwenden, um die VM anzuhalten, während Sie die Speicherauszugsdatei abrufen. Verwenden Sie den folgenden Befehl:
java "-Xtrace:print=j9dmp,trigger=tpnid{j9dmp.10,sleep}"