2012-03-27 68 views
2
#!/bin/bash 
# 
module add apps/java/1.6 
java -Xmx1024m HelloWorld 

我需要設置-XmxYm其中Y應該是Mb系統中95%的可用內存。如何在bash中動態設置java內存大小?

+1

「可用內存」的定義是什麼?你的意思是RAM可用於操作系統嗎?你的意思是虛擬內存可用於進程嗎?或者是什麼? – 2012-03-27 10:44:07

+0

@DavidSchwartz意味着Java可以使用並且不會導致系統崩潰的所有內存。我認爲這是內存可用於操作系統。 – siamii 2012-03-27 10:50:34

+1

請注意,您不能始終爲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

回答

2

這是一個調用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的)。

0

正如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 
+0

那麼如何將其設置在bash文件中? – siamii 2012-03-27 13:16:27

+0

@ bizso09 - 'awk'/ MemTotal:/ {print $ 2}'/ proc/meminfo' – jordanm 2012-03-27 13:54:47

+0

@jordanm您可以在原始腳本和問題的背景下編寫該代碼嗎?我對bash相當陌生。 – siamii 2012-03-28 08:03:38

相關問題