E in generale, sono le unità utilizzate per le opzioni -Xmx
,e -Xmn
("k", "M" e "G", o le meno possibilità standard "K", "m" o "g") Binary prefix multipli (cioè poteri di 1024), o sono poteri di 1000?java -Xmx1G significa 10^9 o 2^30 byte?
I manuali indicano che rappresentano kilobyte (kB), megabyte (MB) e gigabyte (GB), suggerendo che sono potenze di 1000 come definito nel sistema originale SI. I miei test informali (di cui non sono molto fiducioso) suggeriscono che sono in realtà kibibytes (kiB), mebibytes (MiB) e gibibytes (GiB), tutti i poteri di 1024.
Quindi quale è giusto? Per esempio. quale codice Java mostrerebbe la dimensione corrente?
L'utilizzo di multipli di 1024 non è sorprendente per le dimensioni della RAM, poiché la RAM è in genere strutturata fisicamente raddoppiando i moduli hardware. Ma usare le unità in modo chiaro e standard è sempre più importante quando arriviamo a poteri sempre più grandi, dal momento che il potenziale di confusione aumenta. L'unità "t" è accettata anche dalla mia JVM, e 1 TiB è il 10% più grande di 1 TB.
Nota: se questi sono realmente multipli binari, suggerisco di aggiornare la documentazione e le interfacce utente per essere molto chiari su questo, con esempi come "Aggiungere la lettera k o K per indicare i kibibyte (1024 byte) o m oppure M per indicare i mebibyte (1048576 byte) ". Questo è l'approccio adottato, ad es. In Ubuntu: UnitsPolicy - Ubuntu Wiki.
Nota: per ulteriori informazioni sulle opzioni utilizzate, vedere ad es. java - What are the Xms and Xmx parameters when starting JVMs?.
@ElliottFrisch Principalmente sto facendo la domanda, cercando una risposta definitiva. Il suggerimento della documentazione è inteso solo per aggiungere più chiarezza su ciò di cui sono confuso. – nealmcb