(悬赏1000分)java.lang.OutOfMemoryError(hp-unix高手请进)

quanhuang413 2007-10-12 10:58:40
目前有报:
Exception in thread "CompilerThread0" java.lang.OutOfMemoryError: requested
32756 bytes for ChunkPool::allocate. Out of swap space?
Possible causes:
- not enough swap space left, or
- kernel parameter MAXDSIZ is very small.

---------------------------------------------------------------------------------------------
经过检查,swap还大把的有。
MAXDSIZ 设置为2147483648
swapmem_on 也设置为1的。
---------------------------------------------------------------------------------------------
xx xxSwap Space: xx x
xx xx Avail: 16384 MB xx x
xx xx Used: 1798 MB

---------------------------------------------------------------------------------------------
出问题前内存还有大把的空闲。
System: app Wed Oct 10 14:34:22 2007
Load averages: 0.19, 0.16, 0.15
127 processes: 106 sleeping, 20 running, 1 zombie
Cpu states:
CPU LOAD USER NICE SYS IDLE BLOCK SWAIT INTR SSYS
0 0.17 3.0% 0.0% 0.0% 97.0% 0.0% 0.0% 0.0% 0.0%
1 0.22 4.0% 0.0% 0.0% 96.0% 0.0% 0.0% 0.0% 0.0%
--- ---- ----- ----- ----- ----- ----- ----- ----- -----
avg 0.19 3.0% 0.0% 0.0% 97.0% 0.0% 0.0% 0.0% 0.0%

Memory: 3263472K (3218956K) real, 7660516K (7583204K) virtual, 1499376K free Page# 1/13

CPU TTY PID USERNAME PRI NI SIZE RES STATE TIME %WCPU %CPU COMMAND
0 ? 3538 app 152 20 1385M 768M run 1123:34 25.84 25.79 java
0 ? 28832 tomcat 152 20 2973M 1675M run 464:32 13.33 13.31 java
1 ? 2137 root 152 20 306M 93424K run 41:23 1.24 1.23 java
0 ? 2149 root -27 20 17076K 13084K run 23:48 0.75 0.75 cmcld
0 ? 37 root 152 20 9632K 9632K run 5:11 0.49 0.49 vxfsd
1 ? 1724 app 152 24 1219M 183M run 22:09 0.45 0.45 java
0 ? 3781 app 152 24 1210M 174M run 17:35 0.33 0.33 java
0 ? 1287 root 152 20 251M 64744K run 7:09 0.26 0.26 java
1 ? 2320 root 152 20 297M 157M run 4:29 0.20 0.20 java
1 ? 7282 root 152 20 16492K 4112K run 0:23 0.20 0.20 rep_server

描叙:其中tomcat用户的size大小一直在持续增加,每次大概增长4M。res值呈现波浪式变化,有涨有跌。当tomcat用户的size值增加到2950M ,res值增加到1700m左右时,系统报:OutOfMemoryError 。几乎每隔10天左右就会出现这个问题。

------------------------------------------------------------------------------------------------
另外我的tomcat设置为:
JAVA_OPTS="-Xmx2000m -XX:PermSize=128M -XX:MaxPermSize=256M -Dfile.encoding=GBK"

关于这几个值的设置我已经试过很多种组合了。

另外监控jvm的内存分配情况也很正常,最大值为1.7g,但实际应用值为900m

-------------------------------------------------------------------------------------------------
以上是系统环境相关的东东,同时也在程序本身花了工夫去重构代码:
1,关闭未closed的结果集
2,采用复合查询代替原来的多表查询最终组合的方式
3,hibernate查询改为SQL查询
等等。
另外也用jprofile 进行了监控,尚未发现可疑之处。
-------------------------------------------------------------------------------------------------

目前系统每隔10天左右就会报:OutOfMemoryError

请大家帮忙看看是哪个地方有问题?若有好的建议也请提出。
谢谢!
...全文
829 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
Donald1978 2008-09-11
  • 打赏
  • 举报
回复
tomcat 下 java.lang.OutOfMemoryError 其解决方法

http://www.kaiyuanfou.com/viewthread.php?tid=300
ecaol 2007-11-01
  • 打赏
  • 举报
回复
not enough swap space ,

swap space 里面满了,swap尽量要设置的大一些
redex 2007-10-31
  • 打赏
  • 举报
回复
是不是用户并发量太大了, 一般情况下的java服务器, 超过500个以上的并发就会
频繁出错(尤其是java.lang.OutOfMemoryError), 甚至死掉的...
pan2236 2007-10-29
  • 打赏
  • 举报
回复
TOMCAT的问题吧,换个服务器!
aiirii 2007-10-26
  • 打赏
  • 举报
回复
可试试:
-Xms512m -Xmx768m -XX:MaxPermSize=128m -XX:NewSize=300m -XX:MaxNewSize=300m -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -Xss128k

具体内存使用参数再调整,如果怀疑内存泄露之类的,可以用jprofiler 检查
thl_cn1981 2007-10-25
  • 打赏
  • 举报
回复
"CompilerThread0" java.lang.OutOfMemoryError问题解决了吗?
有好的方案,感谢通告thl_cn1981@yahoo.com.cn
acange 2007-10-17
  • 打赏
  • 举报
回复
我们以前有个一java写的东西也有这样一个问题, 后来发现,我们有个 WeakHashMap 来存放一些数据, 但是每次用完之后没有清掉他.

java 有时候比较蠢,他还以为你要继续用那个WeakHashMap, 一直没有释放, 结果 ....

检查一下这样类似的地方把.
phoenixYiYou 2007-10-16
  • 打赏
  • 举报
回复
程序的问题可能性大一些!不过,也最不好解决!
roadingyh 2007-10-15
  • 打赏
  • 举报
回复
应该还是有内存没有释放了吧.
会不会那个返回前,有些资料没有释放.
内存这东西,得小心.
hefuhua 2007-10-13
  • 打赏
  • 举报
回复
-XX:MaxPermSize=1048576
默认单位为k,怀疑java没有进行单位换算(不懂java..),上面1048576K是1G的空间...试试看,内核进程内存最大可以分配到2G..

还有就是检查细节的使用内存的情况的地方..

19,612

社区成员

发帖
与我相关
我的任务
社区描述
系统使用、管理、维护问题。可以是Ubuntu, Fedora, Unix等等
社区管理员
  • 系统维护与使用区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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