Prima di tutto, ho una scatola con 8gb di ram, quindi dubito che la memoria totale sia il problema. Questa applicazione funziona bene su macchine con 6gb o meno.
Sto cercando di riservare 3GB di spazio usando -Xmx3G sotto "VM Arguments" in Run Configurations in Eclipse.
Ogni volta che provo a riservare più di 1500mb, ottengo questo errore: "Error occurred during initialization of VM; Could not reserve enough space for object heap" utilizzando -Xmx3G
Cosa sta succedendo qui?
Questo non è in realtà un problema specifico di Eclipse; è un problema generale di Java su Windows. È a causa di come la JVM alloca la memoria su Windows; insiste per allocare un pezzo contiguo di memoria, che spesso Windows non può fornire, anche se ci sono abbastanza pezzi separati per soddisfare la richiesta di allocazione. Ci sono utility che cercano di aiutare Windows a "deframmentare" la sua memoria, il che, in teoria, aiuterebbe questa situazione; ma non ho davvero provato sul serio, quindi non posso parlare della loro efficacia. Una cosa che ho sentito a volte che potrebbe aiutare è quella di riavviare Windows e, prima di avviare qualsiasi altra applicazione, lanciare l'applicazione Java che ha bisogno di grande porzione di memoria. Se siete fortunati, Windows non avrà ancora frammentato il suo spazio di memoria e Java otterrà il blocco contiguo che chiede.
Da qualche parte su internet ci sono spiegazioni più tecniche e analisi di questo problema, ma non ho alcun riferimento a portata di mano.
Ho trovato questo, però, che sembra utile: https://stackoverflow.com/a/497757/639520
Assicuratevi che Eclipse stia effettivamente eseguendo la stessa JVM che pensate stia eseguendo. Se usi java nel tuo browser web, probabilmente hai anche una versione a 32 bit in giro che potrebbe avere la precedenza se installata o aggiornata di recente.
Per essere assolutamente sicuro, ti consiglio di aggiungere queste due righe al tuo file eclipse.ini
in alto:
-vm
C:/Java/jdk1.6.0_27/bin
...dove sulla mia macchina C:/Java/jdk1.6.0_27/bin
dove si trova la JVM che so essere a 64 bit. Assicurati di avere la cartella bin
lì.
(Come bonus, su Windows 7, questo ti permette anche di "appuntare la scheda" che è il motivo per cui ho dovuto farlo per il mio uso personale)