在linux中,使用top命令查看内存使用状态:看到如下:Mem:  16401408k total, 14070060k used,  2331348k free,    22532k buffers
Swap:  8185076k total,      168k used,  8184908k free,  8747964k cached为什么当我使用java读取文件将文件内容存入对象中时,堆会增加红色部分的数值,并且在红色部分增加到一定程度时,大概到total时,整个tomcat会崩溃掉。服务器如何配置能够让java创建更大的堆内存,或者代码上是否能够改进?
请各位大牛不吝赐教,小弟愧领~

解决方案 »

  1.   

    catalina.batset JAVA_OPTS=-Xmx1024M -Xms512Mcatalina.sh不知道怎么写啊。
      

  2.   

    一样
    JAVA_OPTS=-Xmx1024M -Xms512M
      

  3.   

    我已经设置了,但是好像木有什么用在catalina.bat中
    我的设置是:
    set JAVA_OPTS=-Xmx12g -Xms4g,
    但是处理20几个20M的文件tomcat就挂掉了
      

  4.   

    是不是你linux机器的内存不够啊,系统内存不够,tomcat申请不到内存自然就无法运行了。
      

  5.   


    你咋写到catalina.bat里了,linux不是运行的catalina.sh么?
      

  6.   

    那就该tomcat:-Xms128m -Xmx712m -XX:MaxPermSize=128m
      

  7.   

    linux是通过catalina.bat启动吗?
      

  8.   

    不好意思,写错了,是catalina.sh.
      

  9.   

    使用java读取文件将文件内容存入对象,当你把所有文件都放在这个对象,但这个对象无法被回收,自然全部是积压在内存中这个对象的空间上,最后导致内存消耗完。你先确定你是否把文件全部留读取到了一个不被释放的对象上。
    是否可以每次读取一部分处理完成再读取下一部分(既缓方式读取)。