服务器运行一段时间后就报这个
java.heap.space 
服务器上运行的是个网站 JSF写的网站..
只能重新启动TOMCAT 才行...
谁遇到过相似的问题? 帮忙分析分析

解决方案 »

  1.   

    可能是你的某个程序运行时一次执行大容量的数据,而这些数据一次性被写到了内存。
    比如从数据库中读取10w条记录,或者上传了一个几十M大小的文件,这个时候往往会导致内存溢出。解决:
    一、增加JVM堆设置JVM堆的设置是指java程序运行过程中JVM可以调配使用的内存空间的设置。在JVM中如果Heap size 不足2%的时候将抛出此异常信息。JVM在启动的时候会自动设置Heap size的值,Heap Size 最大不要超过可用物理内存的80%。参数:-Xms64M   -Xmx256M     tomcat   
        
        catalina.bat         
        
      中:     set   JAVA_OPTS=%JAVA_OPTS%   -Xms256M   -Xmx800M   -XX:MaxPermSize=256M        
    实际数值根据的机器内存性能配置
    二、程序优化
    1、检测你的代码中是否存在一次性从数据库中读取10w条记录,优化数据的读取,如分批分页读
    2、如果有上传文件功能,则控制文件的大小。