内存:JVM参数关系Xms,Xmx和XX:MaxPermSize

迦楼 2013-03-29 11:44:46
遇到个奇怪的问题:
一个比较大应用程序在跑一个比较大的操作的时候,在-Xmx768m时能顺利通过,但是-Xmx1024m的是会堆溢出...

能顺利运行完的参数
-Xms512m
-Xmx768m
-XX:MaxPermSize=256m

崩溃的参数
-Xms512m
-Xmx1024m
-XX:MaxPermSize=256m

请教这几个参数之间有什么关系?

崩溃时的控制台输出:
#
# There is insufficient memory for the Java Runtime Environment to continue.
# Native memory allocation (malloc) failed to allocate 140 bytes for CHeapObj-new
# An error report file with more information is saved as:
# ...\hs_err_pid131404.log
...全文
683 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
valid303 2013-03-30
  • 打赏
  • 举报
回复
了解一下。。
gloomyfish 2013-03-30
  • 打赏
  • 举报
回复
-Xms512m // JVM最小的内存启动 -Xmx1024m // JVM最大可得到的内存大小 -XX:MaxPermSize=256m // JVM运行是分配的最大永久性内存大小。不会被垃圾回收的内存。
GeekZFZ 2013-03-29
  • 打赏
  • 举报
回复
线程栈的大小是个双刃剑,如果设置过小,可能会出现栈溢出,特别是在该线程内有递归、大的循环时 时出现溢出的可能性更大,如果该值设置过大,就有影响到创建栈的数量,如果是多线程的应用,就会 出现内存溢出的错误. 如果是64位操作系统建议安装64位JDK
layo 2013-03-29
  • 打赏
  • 举报
回复
32位系统好像只能设置900左右。

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧