#!/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