日期:2014-05-19  浏览次数:20673 次

请教一个关于Linux下java内存的问题
问题是这样,我们部署了一个自己的应用程序服务器
环境是Linux,4核2.0hzCPU,16G内存,64位jdk1.6_u16
服务器参数设置-xmx12g

现在一启动top命令内存占用就达到2g左右
运行12个小时左右对客户端的响应就会非常慢
内存占用能达到8G而且还有上涨趋势

在windows上部署32位xmx1g没有出现过这种情况
windows上启动,用任务管理器看内存占用800m的样子

最奇怪的是用heap dump下来用,看见只有3g左右,跟top看见的8g差别很大

请问有谁遇到过这种问题吗?有没有什么解决办法?谢谢

------解决方案--------------------
遇见过一次,就是服务长时间运行内存一直上升,登陆的人越多越慢。
我们的是数据库连接的问题,不释放资源。
数据库连接池从dbcp换成c3p0解决问题。不知道对你的有帮助没
------解决方案--------------------
在发现问题的阶段,不要开太大内存了。而且内存也不是越大越好。

把内存先设小店,然后开启GC日志,先看看是否存在内存泄露风险。

如果确实发现了,再用工具来跟踪研究下。
------解决方案--------------------
看看涉及到io流的操作是否正常关闭。
------解决方案--------------------
听听2楼大神的,看是不是内存泄露问题,
------解决方案--------------------
我觉得是top和dump本来就没有测一样的内容,对dump不了解,但top是linux的内置命令,按理应该更准确一点吧
可不可以找一个linux上更权威强力的工具来测呢,也可以印证一下top结果

找到一个:http://valgrind.org/
------解决方案--------------------
+1
探讨

在发现问题的阶段,不要开太大内存了。而且内存也不是越大越好。

把内存先设小店,然后开启GC日志,先看看是否存在内存泄露风险。

如果确实发现了,再用工具来跟踪研究下。