首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java内存: jstat Runtime.getRuntime().freeMemory();

Java内存: jstat Runtime.getRuntime().freeMemory();
EN

Stack Overflow用户
提问于 2012-12-21 09:34:08
回答 1查看 745关注 0票数 3

我正在运行一个java应用程序,在这里我观察到了以下内容:

通过代码,我正在计算内存利用率:

代码语言:javascript
复制
long freeMemory = Runtime.getRuntime().freeMemory();
this.memUsage = 100f - (freeMemory*100)/this.maxMemory;
where
instance.maxMemory = Runtime.getRuntime().maxMemory();

时间戳S0 S1 E O P YGC YGCT FGC FGCT

2849.6 0.00 84.80 93.14 16.95 60.00 483 140.140 8 3.649 143.789

首先,我的代码将显示哪个memory.Old,伊甸园还是幸存者。

在特定的时候,我观察到我的代码给了我与jstat旧内存利用率不同的输出。就像这里,jstat旧的显示大约17 %,我的代码显示20%。有什么原因吗??

EN

回答 1

Stack Overflow用户

发布于 2013-01-01 14:29:33

据我所知,运行时内存方法只将堆报告为总计(因此所有的值都是旧的、伊甸园的、幸存者的和永久的)。这就是关闭值的原因,因为没有jstat输出来告诉您总的堆利用率。

关于Runtime.freeMemory(),有一点要注意的是,它可能并不完全准确。来自方法的javadoc:

返回以字节为单位的用于未来分配对象的当前可用内存总量的近似

我倾向于不信任Runtime类返回的关于内存的任何值。或者使用j控制台或jstat这样的外部命令获取内存统计数据,或者在启动java程序时使用-Xloggc。对于监视内存使用情况,这些方法比我见过的任何API方法都更可靠。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13987537

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档