Perché la prenotazione della memoria virtuale Java è così alta? Bug?

6

Sul mio Mac Os 10.5.8 Server, Java sta riservando 16,777,216TB (circa un terzo in più di la somma di tutte le conoscenze umane -eek!) della memoria virtuale. So che in realtà non lo riserverò (sarebbe bello se lo fosse!); è qualcosa di cui preoccuparsi (cioè un bug / problema tecnico), e se no, cosa significa?

    
posta glenstorey 11.07.2011 - 06:10
fonte

1 risposta

1

16 Mebi TebiByte (16 ExbiByte) è 2 ^ 64 byte. La tua macchina deve utilizzare l'indirizzamento a 64 bit e la tua JVM (Java Virtual Machine) probabilmente ha scritto qualcosa per indirizzare 0xffffffffffffffff all'interno del proprio spazio di indirizzamento virtuale (possibilmente scrivendo accidentalmente all'indirizzo che è inferiore a 0x0000000000000000), causando il Mac OS X sottosistema di memoria virtuale del kernel per considerare che quel processo utilizza l'intero spazio di indirizzamento virtuale di quel processo.

Non preoccuparti, la memoria virtuale è sparsa . Cioè, non assegna le pagine di memoria (o lo spazio di swap sul disco) per ogni indirizzo mappato, solo per le pagine di memoria che il processo ha effettivamente scritto . Ma immagino che sia ovvio già a meno che non si abbia un RAID ExbiByte 16+ montato a / o a /var/vm/ dove si trovano i file di scambio di memoria virtuale. : -)

La visualizzazione di un processo che causa la mappatura dell'intero spazio virtuale degli indirizzi a 64 bit è strana, ma non dovrebbe causare problemi.

    
risposta data 13.07.2011 - 11:42
fonte

Leggi altre domande sui tag