![](/img/trans.png)
[英]Increase Heap Size for Java server (Increasing JVM Memory of Go Server)
[英]Increasing the JVM maximum heap size for memory intensive applications
我需要運行 Java memory 使用超過 2GB 的密集型應用程序,但我在增加堆最大大小時遇到問題。 到目前為止,我已經嘗試了以下方法:
設置-Xmx 參數,例如-Xmx3000m。 這種方法在創建 JVM 時失敗了。從我用谷歌搜索的結果來看,-Xmx 似乎必須小於 2GB。
使用-XX:+AggressiveHeap 選項。 當我嘗試這種方法時,我收到“內存不足”錯誤,提示堆大小為 1273.4 MB,即使我的計算機有 8GB 的 memory。
是否有另一種方法可以嘗試增加 JVM 的最大堆大小? 以下是計算機規格的摘要:
java version "1.6.0_18" Java(TM) SE Runtime Environment (build 1.6.0_18-b07) Java HotSpot(TM) Client VM (build 16.0-b13, mixed mode, sharing)
在 32 位模式下使用 JVM 時,可以分配的最大堆大小為 1280 MB。 所以,如果你想超越它,你需要在 64 模式下調用 JVM。
您可以使用以下內容:
$ java -d64 -Xms512m -Xmx4g HelloWorld
在哪里,
您可以根據需要調整 -Xms 和 -Xmx (YMMV)
關於 JVM 性能調整的非常好的資源,可能需要查看: http : //java.sun.com/javase/technologies/hotspot/gc/gc_tuning_6.html
從Oracle獲取 64 位 JVM。
我相信 2GB 的限制是針對 32 位 Java 的。 我認為 v1.6 總是 64 位,但嘗試強制 64 位模式只是為了查看:添加 -d64 選項。
32 位 Java 被限制為大約 1.4 到 1.6 GB。
引用
32 位 JVM 的最大理論堆限制為 4G。 由於可用交換、內核地址空間使用、內存碎片和 VM 開銷等各種附加限制,實際上限制可能要低得多。 在大多數現代 32 位 Windows 系統上,最大堆大小范圍為 1.4G 到 1.6G。 在 32 位 Solaris 內核上,地址空間限制為 2G。 在運行 32 位 VM 的 64 位操作系統上,最大堆大小可以更高,在許多 Solaris 系統上接近 4G。
以下 conf 對我有用:
JAVA_HOME=/JDK1.7.51-64/jdk1.7.0_51/
PATH=/JDK1.7.51-64/jdk1.7.0_51/bin:$PATH
export PATH
export JAVA_HOME
JVM_ARGS="-d64 -Xms1024m -Xmx15360m -server"
/JDK1.7.51-64/jdk1.7.0_51/bin/java $JVM_ARGS -jar `dirname $0`/ApacheJMeter.jar "$@"
對於 memory 密集型應用程序,GraalVm 可以作為更好的替代方案。 提供 32 GB 作為最大堆大小和其他好處。 熱點 vs Graal
就我而言,
-Xms1024M -Xmx1024M 正常工作
-Xms1024M -Xmx2048M 結果:無法為對象堆保留足夠的空間
使用 JVM 64 位后,它允許使用 2GB RAM,因為我使用的是 win server 2012
https://www.codementor.io/@suryab/does-32-bit-or-64-bit-jvm-matter-anymore-w0sa2rk6z
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.