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

JAVA进程内存占用很多,不释放
公司的程序,运行时内存一直增加不释放。我用JProfiler 和JConsole检测了内存情况,使用还算正常。监控到内存会自动GC
而且保持在500M used,400M free 的情况,但是windows中线程管理中看到的却是1.6G的内存占用,而且使用那些工具手动GC
系统使用的内存变成 20M used ,800m free 。可是windows中线程管理中看到的还是1.6G。

请问这是怎么回事?该怎么调整呢。时间久了会报内存溢出

------解决方案--------------------
你说的这些现象,不是主要问题。

因为Windows中看到的是JVM的总内存消耗。而JConsole工具看到的则是JVM内部对这些内容的使用情况。这两者本来就不同。


内存溢出是主要问题,但你说的这些现象对帮助分析内存溢出没意义。
请继续使用工具来监控JVM,定义执行GC,然后检查哪些对象在每次GC之后持续增长。也就是GC并不能回收且持续增长的对象;这才是重点。
------解决方案--------------------
有放有收 形成的是 锯齿状的 图形 不用担心
------解决方案--------------------
myeclipse用了半天,内存使用就有600mb了,然后关掉在重新启动,就少了很多。。