Perché Eclipse si arresta in modo anomalo con Xmx, XX: MaxPermSize oltre determinati valori?

StackOverflow https://stackoverflow.com/questions/1804913

  •  05-07-2019
  •  | 
  •  

Domanda

Esecuzione di Eclipse 3.5.1, JDK 1.6.0_17 su WinXP SP3 32 bit con 3,5 GB di RAM.
Sono a conoscenza delle note Best practice Eclipse , ancora cercando di capire eclipse.ini.

Verrà avviato: -Xmx588m e non sarà: -Xmx589m.
Lo stesso con -XX:MaxPermSize. Nulla al di sopra di -XX:MaxPermSize=140m non verrà avviato.
Lo schermo della morte è simile a questo (tratto da here ).

Qualche idea sul perché ciò potrebbe accadere?

È stato utile?

Soluzione

Vedi questo errore di eclissi .

Il problema generale è che jvm richiede un blocco contiguo di memoria per questo. Su Windows, il processo otterrà 2 concerti, altre librerie che verranno caricate verranno posizionate in diverse aree dello spazio di memoria. Se una libreria sembra posizionarsi nel mezzo, praticamente taglia in metà della dimensione che puoi usare.

Il programma di avvio di Eclipse caricherà alcune dll di sistema per eseguire la grafica e, in particolare, user32.dll può causare il caricamento di librerie di terze parti a seconda di ciò che è installato sul tuo computer (visto qui ).

Per raggiungere limiti di memoria più elevati, è possibile forzare il jvm a essere biforcato in un processo separato dal launcher di eclissi. Il processo jvm non caricherà queste librerie extra fino a quando la vm non avrà inizializzato la sua memoria. Fallo usando un argomento -vm che punta a un javaw.exe:

eclipse -vm C:\jdk\jre\bin\javaw.exe

Altri suggerimenti

Vedi anche questo bug 203325 per suggerimenti su come monitorare il modo in cui viene utilizzata la memoria, con strumenti come:

  • JConsole
  • Strumento Memory Monitor (strumento eclipse)

Nota: come commentato qui :

  

Se non si dichiara il limite massimo di memoria, questo viene lasciato al gestore della memoria del sistema operativo.

     

-Xmx <size> è utile per programmare un piccolo dispositivo come J2ME.
  Se stai programmando per un dispositivo di piccole dimensioni che è limitato dalla memoria, puoi utilizzare -Xmx la proprietà JVM per emulare il dispositivo di piccole dimensioni, anche se potresti utilizzare un PC.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top