#!/bin/bash
#
module add apps/java/1.6
java -Xmx1024m HelloWorld
我需要設置-XmxYm
其中Y
應該是Mb系統中95%的可用內存。如何在bash中動態設置java內存大小?
#!/bin/bash
#
module add apps/java/1.6
java -Xmx1024m HelloWorld
我需要設置-XmxYm
其中Y
應該是Mb系統中95%的可用內存。如何在bash中動態設置java內存大小?
這是一個調用Java所需的堆大小的腳本。
#!/bin/bash
# Total memory in KB
totalMemKB=$(awk '/MemTotal:/ { print $2 }' /proc/meminfo)
# Percentage of memory to use for Java heap
usagePercent=95
# heap size in KB
let heapKB=$totalMemKB*$usagePercent/100
# heap size in MB
let heapMB=$heapKB/1024
module add apps/java/1.6
java -Xmx${heapMB}m HelloWorld
我強烈建議你使用較低usagePercent,因爲Java應用程序使用比堆大小更多的內存(用於如,對於PermGen的)。
正如Peter Lawrey所說,將95%的內存分配給堆可能不明智。
但是,您可以通過閱讀「/ proc/meminfo」文件來確定內存大小。嘗試
cat /proc/meminfo
MemTotal: 32958996 kB
MemFree: 23461744 kB
Buffers: 133772 kB
Cached: 1651888 kB
SwapCached: 0 kB
Active: 8460504 kB
Inactive: 740048 kB
HighTotal: 0 kB
HighFree: 0 kB
LowTotal: 32958996 kB
LowFree: 23461744 kB
SwapTotal: 34996216 kB
SwapFree: 34996216 kB
Dirty: 372 kB
Writeback: 0 kB
AnonPages: 7415344 kB
Mapped: 61260 kB
Slab: 206896 kB
PageTables: 24320 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
CommitLimit: 51475712 kB
Committed_AS: 18514524 kB
VmallocTotal: 34359738367 kB
VmallocUsed: 282388 kB
VmallocChunk: 34359454135 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
Hugepagesize: 2048 kB
「可用內存」的定義是什麼?你的意思是RAM可用於操作系統嗎?你的意思是虛擬內存可用於進程嗎?或者是什麼? – 2012-03-27 10:44:07
@DavidSchwartz意味着Java可以使用並且不會導致系統崩潰的所有內存。我認爲這是內存可用於操作系統。 – siamii 2012-03-27 10:50:34
請注意,您不能始終爲JVM分配儘可能多的內存。一些提示:http://stackoverflow.com/questions/171205/java-maximum-memory-on-windows-xp,http://stackoverflow.com/questions/1190837/java-xmx-max-memory-on-system ,http://stackoverflow.com/questions/3030263/increasing-the-jvm-maximum-heap-size-for-memory-intensive-applications – Thomas 2012-03-27 10:58:08