遇到个奇怪的问题:
一个比较大应用程序在跑一个比较大的操作的时候,在-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

解决方案 »

  1.   

    线程栈的大小是个双刃剑,如果设置过小,可能会出现栈溢出,特别是在该线程内有递归、大的循环时 
    时出现溢出的可能性更大,如果该值设置过大,就有影响到创建栈的数量,如果是多线程的应用,就会 
    出现内存溢出的错误. 
    如果是64位操作系统建议安装64位JDK
      

  2.   

    -Xms512m // JVM最小的内存启动
    -Xmx1024m // JVM最大可得到的内存大小
    -XX:MaxPermSize=256m // JVM运行是分配的最大永久性内存大小。不会被垃圾回收的内存。