Esaurimento della memoria nativa in Windows

Il processo del sistema operativo che esegue la macchina virtuale (VM) Java non dispone di memoria sufficiente per produrre il file dump.

A volte la VM può non riuscire a produrre un file di dump su Windows perché non c'è sufficiente memoria nativa disponibile per il processo del sistema operativo che sta eseguendo la VM. Ad esempio, il seguente output potrebbe essere scritto 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
È possibile che venga visualizzato anche questo errore:
JVMDUMP012E Error in System dump: Dump failed - could not begin dump thread

La libreria DBGHELP.DLL è necessaria per la VM per generare un file di dump di sistema su Windows ed è fornita nell'SDK. Un errore di caricamento di questa libreria indica che il processo ha esaurito la memoria nativa disponibile.

È possibile utilizzare un programma di debug Windows come WinDbg, Visual Studio o Windows Task Manager per generare un file di dump di sistema in queste circostanze. Questi programmi di debug caricano le librerie richieste in un processo separato. Potrebbe essere necessario forzare l'arresto della macchina virtuale nel punto di guasto per ottenere un file di dump utilizzando questi debugger. Se l'errore è un arresto anomalo, come nell'esempio precedente, è possibile impostare l'opzione della riga comandi -Xrs . Questa opzione fa sì che il sistema operativo arresti la VM e visualizzi una finestra di dialogo Windows quando si verifica l'arresto anomalo. Se l'errore non è un arresto anomalo, ad esempio, se la VM stava producendo un file di dump per un'eccezione Java™ , è possibile utilizzare l'azione del trigger di sospensione su un punto di traccia per arrestare la VM mentre si ottiene il file di dump. Utilizzare questo comando:
java "-Xtrace:print=j9dmp,trigger=tpnid{j9dmp.10,sleep}"