1
我想计算我的Java应用程序的当前内存使用情况。但是,当我使用以下代码时,与任务管理器中显示的内容有很大差异。Java:计算内存使用率时的结果不准确
Runtime rt = Runtime.getRuntime();
long usedMemory = (rt.totalMemory() - rt.freeMemory())/1024;
根据任务管理器,当进程消耗3.000.000K时,该代码将例如,计算2.015.203和1秒后1.712.296,实际上内存使用量增加了。
根据类似的问题,代码应该没问题,但为什么与任务管理器相比有如此巨大的差别?
JVisualVM报告是什么 - 它与TaskManager有什么不同? – 2012-04-26 23:46:59
你在任务管理器中查看了哪些列?有很多内存列。 – 2012-04-26 23:49:50
你为什么想知道?这不是一个轻浮的问题。 Java是一个高度复杂的托管环境,在几乎所有情况下,您都不应该通过询问操作系统来尝试为其制定流程管理决策。 – kittylyst 2012-04-27 03:12:18