Esiste un processo a 32 bit bisogno di più memoria quando viene eseguito su un sistema a 64 bit?
-
21-08-2019 - |
Domanda
Ho un piuttosto avido di memoria applicazione java.
Sui miei sistemi a 32 bit con Windows XP Professional l'applicazione sarà solo funzionare bene se lo do -Xmx1280m
. Tutto sotto finirà in un'eccezione java.lang.OutOfMemoryError: Java heap space
.
Se faccio funzionare la stessa applicazione su un computer Windows XP Professional (tutto il resto esattamente lo stesso) a 64 bit richiede -Xms1400m
per evitare che la condizione OutOfMemory.
Per la mia comprensione, se ho un programma in C e ho compilarlo per 32 bit e 64 bit per il versione a 64 bit sarà bisogno di più memoria perché i puntatori sono più larghi e così via. Nel mio esempio java tuttavia la macchina virtuale (Sole) è lo stesso e il bytecode è lo stesso.
Perché ha bisogno più memoria sulla macchina a 64 bit?
Soluzione
Probabilmente perché il macchina virtuale attuazione differisce tra architettura 32/64 bit in modo tale che consuma più memoria (più larghi, differente GC).
Il codice byte è irrilevante quando passa sui compiti al sistema sottostante. Non sono sicuro che Java e la memoria-efficiente sono due termini avrei messo insieme comunque: P
Altri suggerimenti
Anche se il bytecode è lo stesso, la JVM converte che in codice macchina, quindi ha tutte le stesse ragioni di C per richiedere una memoria più grande impronta.
E 'la stessa ragione per cui già elencati per il programma C. Il sistema a 64 bit utilizza grandi indirizzi di memoria, inducendolo a essere "leakier" (credo che sia il termine che ho sentito usato per descriverlo).