基于Tomcat服务的java.lang.OutOfMemoryError: Java heap space异常?求助高手..

chenyinglong0712 2011-12-20 09:15:24
java.lang.OutOfMemoryError: Java heap space. //这个异常烦恼了我好久.
一. 首先我简单说一下我所搭建的环境.
1.项目服务器: Tomcat7.0
2.项目框架: S2SH + 全Annotation

二. 我在网上也找过资料看了一下,说只要修改Tomcat中的 Catalina.bat这个文件.添加一行代码:
set JAVA_OPTS=-Xms64m -Xmx256m //效果还是差不多.把上线改大一点,也无效果.这里,我觉得这是治根不治本的

三. 也看过一位前辈的文章说,他是因为我们搭建Spring+Hibernate,加载实体对象并进行缓存时的内存占用的比较
多.所以在我们查询数据库比较频繁的时候会就会抛出这样一个异常.


在这里向有过这般经验的大侠求助, 非常非常感谢. 急....
...全文
215 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
chenyinglong0712 2011-12-20
  • 打赏
  • 举报
回复
不知是否,还有不同的见解? 请教.....
chenyinglong0712 2011-12-20
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 ella110727 的回复:]
你上线的话,是不是查询的数据量有点多。多采用分页查询。list map集合,使用完后。尽量清除。
[/Quote]

对,就是查询的时候或者大批数据量更新的时候出现了这个问题.
qq827010202 2011-12-20
  • 打赏
  • 举报
回复
你上线的话,是不是查询的数据量有点多。多采用分页查询。list map集合,使用完后。尽量清除。
chenyinglong0712 2011-12-20
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 lbx604682131 的回复:]
根治的办法最终还是在硬件上啊,加内存。一个服务器才200多M的内存,没一点服务器的样。
[/Quote]

说得也是,不过的话,我用的是自己机子作为服务器,来测试,可能的话换到服务器上就没这个问题了?对吧?
lbx 2011-12-20
  • 打赏
  • 举报
回复
根治的办法最终还是在硬件上啊,加内存。一个服务器才200多M的内存,没一点服务器的样。
chenyinglong0712 2011-12-20
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 ollim 的回复:]
session close把
[/Quote]

Spring不是可以自动去关闭吗?
chenyinglong0712 2011-12-20
  • 打赏
  • 举报
回复
我还想补充一点,为什么我将C3P0的maxPoolSize改大一点,却可以缓解报错的时间....但是还是治根不治本的手段.....
ollim 2011-12-20
  • 打赏
  • 举报
回复
session close把
chenyinglong0712 2011-12-20
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 kouyisc 的回复:]
引用
个人认为硬件本身是有一些不足。。可以改进。。但根本还是得从程序查询等操作的优化上着手。。。查询索引啊。。常见的优化方式是否已经做好。。。

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

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

我用过的工具:MemoryAnalyz……
[/Quote]

非常感谢您...!
kouyiSC 2011-12-20
  • 打赏
  • 举报
回复
引用
个人认为硬件本身是有一些不足。。可以改进。。但根本还是得从程序查询等操作的优化上着手。。。查询索引啊。。常见的优化方式是否已经做好。。。

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

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

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

67,550

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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