日期:2014-05-20  浏览次数:20765 次

基于Tomcat服务的java.lang.OutOfMemoryError: Java heap space异常?求助高手..
java.lang.OutOfMemoryError: Java heap space. //这个异常烦恼了我好久.
  一. 首先我简单说一下我所搭建的环境.
  1.项目服务器: Tomcat7.0 
  2.项目框架: S2SH + 全Annotation
   
  二. 我在网上也找过资料看了一下,说只要修改Tomcat中的 Catalina.bat这个文件.添加一行代码:
  set JAVA_OPTS=-Xms64m -Xmx256m //效果还是差不多.把上线改大一点,也无效果.这里,我觉得这是治根不治本的
  
  三. 也看过一位前辈的文章说,他是因为我们搭建Spring+Hibernate,加载实体对象并进行缓存时的内存占用的比较
  多.所以在我们查询数据库比较频繁的时候会就会抛出这样一个异常.


 在这里向有过这般经验的大侠求助, 非常非常感谢. 急....


------解决方案--------------------
session close把
------解决方案--------------------
根治的办法最终还是在硬件上啊,加内存。一个服务器才200多M的内存,没一点服务器的样。
------解决方案--------------------
你上线的话,是不是查询的数据量有点多。多采用分页查询。list map集合,使用完后。尽量清除。
------解决方案--------------------
引用
个人认为硬件本身是有一些不足。。可以改进。。但根本还是得从程序查询等操作的优化上着手。。。查询索引啊。。常见的优化方式是否已经做好。。。

查询时。有没有避免全表扫描。。。等等。。

还有你的数据量有多大?并发有多大? 竟然在更新时都会溢出? 遇到溢出时,建议还是用内存分析工具分析一下。。看看哪个操作内存占用的厉害。。。然后再优化。。。

我用过的工具:MemoryAnalyzer,将工程在cmd命令达成一个.bin文件导入该工具。。即可进行分析。。很好用。。很实用。。。比起你在茫茫代码中找某段代码造成的溢出有巨大帮助。。。