****tomcat6 老是内存一断增长

amdgaming 2011-02-22 08:37:10
最近我的项目,tomcat内存不断增长,内存不释放,系统运行运行就是内存溢出了;

以下是我catalina.sh的JAVA_OPTS

JAVA_OPTS='-server -Xms2048m -Xmx3072m -XX:+UseConcMarkSweepGC -XX:+CMSIncrementalMode -XX:NewSize=512m -XX:MaxPermSize=256m'

请大家分析可能是什么原因内存溢出呢?

还有我的JAVA_OPTS配置有问题吗?请大家指正。
...全文
230 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
qingkangxu 2011-02-24
  • 打赏
  • 举报
回复
[Quote=引用 23 楼 qingkangxu 的回复:]
引用 22 楼 amdgaming 的回复:
引用 18 楼 bao110908 的回复:

那工具是 JDK 自带的啊 jdk_home/bin/jvisualvm 没有么?

linux下 这个工具可以用吗? 没有gui客户端的啊

不能用 这是需要GUI的
[/Quote]
你可以用startx把linux的GUI起起来
qingkangxu 2011-02-24
  • 打赏
  • 举报
回复
[Quote=引用 22 楼 amdgaming 的回复:]
引用 18 楼 bao110908 的回复:

那工具是 JDK 自带的啊 jdk_home/bin/jvisualvm 没有么?

linux下 这个工具可以用吗? 没有gui客户端的啊
[/Quote]
不能用 这是需要GUI的
  • 打赏
  • 举报
回复
那工具是 JDK 自带的啊 jdk_home/bin/jvisualvm 没有么?
amdgaming 2011-02-24
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 bao110908 的回复:]

那工具是 JDK 自带的啊 jdk_home/bin/jvisualvm 没有么?
[/Quote]
linux下 这个工具可以用吗? 没有gui客户端的啊
woshimike 2011-02-24
  • 打赏
  • 举报
回复
你看下你的项目里面有动态编译的代码吗?如果有的话 在看下你的jdk的小版本号是多少 如果是1.6.0.23一下版本 jdk是有bug的。 阿门....
qingyuan18 2011-02-24
  • 打赏
  • 举报
回复
你需要确定的是:是否你的应用导致内存一直增长不释放,如果是这样属于内存泄漏,你得找出泄漏点并改程序

jRorket可以检测到内存中那个对象实例一直在增长,根据这个对象查找你代码中create该对象的代码,一般是对象循环引用造成jvm垃圾收集器无法回收
qingkangxu 2011-02-24
  • 打赏
  • 举报
回复
jvisualvm是JDK1.6才有的,你也可以单独下载的。
LZ,你先看看内存溢出之后的堆栈吧。
amdgaming 2011-02-23
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 cuilike 的回复:]

引用 10 楼 amdgaming 的回复:
引用 9 楼 zn85600301 的回复:

引用 5 楼 bao110908 的回复:

如果能从虚拟机参数就能分析出原因的话,那也不叫分析了。

一般内存溢出 都是一些资源没有释放持续占用
还是先排查代码吧

排查了代码 很多数据源 打开 没有释放,但是改完了 还有问题

是outofmemory异常 谢谢


有……
[/Quote]
有可能把,没有分页的应该改掉了,大对象 还不太清楚
cuilike 2011-02-23
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 amdgaming 的回复:]
引用 9 楼 zn85600301 的回复:

引用 5 楼 bao110908 的回复:

如果能从虚拟机参数就能分析出原因的话,那也不叫分析了。

一般内存溢出 都是一些资源没有释放持续占用
还是先排查代码吧

排查了代码 很多数据源 打开 没有释放,但是改完了 还有问题

是outofmemory异常 谢谢
[/Quote]

有些大对象释放有问题?或者是某些查询没有做分页?
amdgaming 2011-02-23
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 zn85600301 的回复:]

引用 5 楼 bao110908 的回复:

如果能从虚拟机参数就能分析出原因的话,那也不叫分析了。

一般内存溢出 都是一些资源没有释放持续占用
还是先排查代码吧
[/Quote]
排查了代码 很多数据源 打开 没有释放,但是改完了 还有问题

是outofmemory异常 谢谢
zn85600301 2011-02-23
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 bao110908 的回复:]

如果能从虚拟机参数就能分析出原因的话,那也不叫分析了。
[/Quote]
一般内存溢出 都是一些资源没有释放持续占用
还是先排查代码吧
licip 2011-02-23
  • 打赏
  • 举报
回复
应该是程序问题。你要去仔细分析你的程序代码。
zqfddqr 2011-02-23
  • 打赏
  • 举报
回复
把不用的变量人为付空值

你引用的
变量
太多了吧
i李小武 2011-02-23
  • 打赏
  • 举报
回复
可能是程序的问题了,LZ检查程序看看吧
amdgaming 2011-02-23
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 mybeautiful 的回复:]

肯定是内存泄露, 如楼上各位所说,是否存在 List, Map等容器装了东西,但是从不取出。

分析工具除楼上所说,可以使用 JDK自带的 jvisualvm.exe (同 javac.exe等在同一目录)
[/Quote]
list map,set也查过,应该没有
程序跑在linux上,没有装这些工具 怎么检查??
Mybeautiful 2011-02-23
  • 打赏
  • 举报
回复
肯定是内存泄露, 如楼上各位所说,是否存在 List, Map等容器装了东西,但是从不取出。

分析工具除楼上所说,可以使用 JDK自带的 jvisualvm.exe (同 javac.exe等在同一目录)
qingkangxu 2011-02-23
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 qingkangxu 的回复:]
1,可以查一查你代码中有没有使用List Map等数据结构,是不是有一直往Collection中放数据的逻辑。这种问题的分析需要一定的经验
2,建议JAVA_OPTS中增加【-XX:-HeapDumpOnOutOfMemoryError】,在内存溢出的时候打出Heap的信息,把heap信息贴出来大家一起分析分析。
[/Quote]
3,注意设置[-XX:HeapDumpPath]
qingkangxu 2011-02-23
  • 打赏
  • 举报
回复
1,可以查一查你代码中有没有使用List Map等数据结构,是不是有一直往Collection中放数据的逻辑。这种问题的分析需要一定的经验
2,建议JAVA_OPTS中增加【-XX:-HeapDumpOnOutOfMemoryError】,在内存溢出的时候打出Heap的信息,把heap信息贴出来大家一起分析分析。
  • 打赏
  • 举报
回复
如果能从虚拟机参数就能分析出原因的话,那也不叫分析了。
cuilike 2011-02-22
  • 打赏
  • 举报
回复
用JCONSOLE或者Jprofile 监测下再确定问题吧
加载更多回复(3)

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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