[问题] gc()后,javaw.exe内存降不下来

楼主: liu2007 (è–¯)   2019-09-19 12:52:14
我同时使用下列两个软件来查看我程式对于内存使用的情况:
1.jconsole观看 Heap Memory Usage
2.工作管理员的 javaw.exe 内存(私人工作集)
当我程式将Queue里面的东西clear (大量的ImageView)
(基本上那些东西在Queue clear之后就没有指标指向它们)
(但保险起见把相关的指标都设成null)
并且呼叫System.gc()
尽量在我的认知下不造成memory leak
从jconsole来看,Heap Memory Usage 从将近1GB慢慢降至100MB
但从工作管理员来看,javaw.exe的 内存(私人工作集)
始终维持在lifetime中历史的最高值 (以这个例子来说是1.2G)
我想问以jconsole的结果来看,我有正确释放内存吗?
如果有的话,为什么javaw.exe占用的内存却没有往下掉呢
请问这是我java程式有什么致命的错误吗?
还是这是作业系统的关系吗?
虽然程式程式不会当掉
但如果使用者看到我占用1G以上的内存(而且还不会降下来)
应该就不会想用我的程式...
希望能够帮我解惑,感谢
作者: swpoker (swpoker)   2019-09-19 16:58:00
jvm是不会听话的
作者: ssccg (23)   2019-09-19 17:35:00
gc是对jvm来说空的heap增加,不代表jvm heap很空就要还给os跟gc参数、collector、jvm版本都有关系,有需要你要去研究
作者: sw12 (专注.幽默)   2019-09-20 13:09:00
试试不同的os
作者: atpx (秋雨的心情)   2019-09-28 16:55:00
jvm allocate内存就不会放掉, 看程式耗用量要看heap

Links booklink

Contact Us: admin [ a t ] ucptt.com