2017-03-20 22 views
1

在java文檔(以及web上的示例中)的-Xmx標誌的每個示例中,它總是2的冪。例如'-Xmx512m',' - Xmx1024m'等java中的-Xmx標誌的有效值

這是一個需求,還是由於某種原因是一個好主意?

我明白記憶體總的來說是2的冪;這個問題是關於java內存標誌的具體問題。

+0

你有沒有了解二進制?兩個權力? '6g'是有效的..這不是2次 –

+0

可能重複的功率[爲什麼是2的冪RAM?](http://stackoverflow.com/questions/22096327/why-is-ram-in- 2的權力) –

+0

與其他問題AFAICS無關。這個問題一般是關於Android模擬器和內存的RAM,這個是關於'-Xmx' Java命令行參數的值。此外,這個問題的答案和這個問題的答案不會互相影響。 –

回答

3

它使事情變得簡單,但它比其他任何事情都更有益處。

沒有特別的理由選擇2的冪或50MB的倍數(也是常見的),例如-Xmx400m-Xmx750m

注意:JVM並沒有嚴格遵循這一點。它將使用這個來計算不同區域的大小,如果你將它們加起來往往比你提供的數量少。根據我的經驗,堆少1%-2%,但如果考慮JVM使用的所有其他內存區域,這並沒有多大區別。

注意:硬件的內存大小通常是2的冪數(在某些PC上,它是3x的2次冪)這可能會讓人們養成將內存大小視爲2的冪的習慣。在大多數JVM中,每個區域的實際大小是頁面大小的倍數,即4KB。