今天爱分享给大家带来请简单描述下面几个参数的意思和错误的原因。-xms; 初始堆大小-xmx; 最大堆大小-XX:PermSize;非堆区初始内存分配大小Exception in thread “main”:java.lang.OutOfMemoryError:Java heap space【面试题详解】,希望能够帮助到大家。
答:Heap size 设置 JVM 堆的设置是指 java 程序运行过程中 JVM 可以调配使用的内存
空间的设置.JVM 在启动的时候会自动设置 Heap size 的值,其初始空间(即-Xms)是物理内存
的 1/64,最大空间(-Xmx)是物理内存的 1/4。可以利用 JVM 提供的-Xmn -Xms -Xmx 等选项
可进行设置。Heap size 的大小是 Young Generation 和 Tenured Generaion 之和。提示:在 JVM
中如果 98%的时间是用于 GC 且可用的 Heap size 不足 2%的时候将抛出此异常信息。提示:
Heap Size 最大不要超过可用物理内存的 80%,一般的要将-Xms 和-Xmx 选项设置为相同,
而-Xmn 为 1/4 的-Xmx 值。
解决方法:手动设置 Heap size 修改 TOMCAT_HOME/bin/catalina.sh 在“echo “Using
CATALINA_BASE: $CATALINA_BASE” ” 上 面 加 入 以 下 行 : JAVA_OPTS=”-server
-Xms800m -Xmx800m -XX:MaxNewSize=256m”