首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >预测java组件的内存消耗

预测java组件的内存消耗
EN

Stack Overflow用户
提问于 2019-08-23 18:52:00
回答 2查看 60关注 0票数 0

我目前正在开发一个运行多个组件的事件驱动系统。最近,我收到了一个紧急要求,要求确定运行的java组件的内存消耗,以便在将其部署到UAT/客户生产环境之前,我们可以对内存需求有一个简要的了解。

我们是否有任何API可以用来计算深度保留大小,或者可以提供一个公式来计算内存需求。

关于这一点的任何想法都肯定会有所帮助。

我已经看过一些Api( java instrumentation Api),可以用来计算浅层大小,但这不能满足我的需要。我还发现了java Assist,它可以在运行时修改java字节码。

EN

回答 2

Stack Overflow用户

发布于 2019-08-23 20:25:52

要识别java应用程序的内存消耗,可以使用分析器。在JDK6或更高版本中,您可以找到jvisualvm (https://docs.oracle.com/javase/8/docs/technotes/tools/unix/jvisualvm.html)。

使用jvisualvm,您可以附加到一个java进程,并且在sampler选项卡中,您可以看到按类类型分组的内存消耗情况。甚至还有其他强大的分析器(JProfiler就是其中之一)

票数 1
EN

Stack Overflow用户

发布于 2019-08-23 20:46:22

启用垃圾收集日志记录并分析日志。作为额外的奖励,你还可以识别(和修复)异常行为。

要打开gc日志记录,请使用以下标志:

-verbose:gc -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintTenuringDistribution -XX:+PrintGCCause -Xloggc:/gc-%t.log

然后,可以在许多工具中处理此日志文件,如JClarity的Censum或将其上传到https://gceasy.io/以便于分析。请注意,您将看到应用程序的整体内存消耗,而不是细目。为此,您必须使用上面提到的VisualVM之类的东西。

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

https://stackoverflow.com/questions/57624832

复制
相关文章

相似问题

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