需要澄清 jar 的内存使用情况
我正在使用这个命令运行一个罐子。注意内存参数。 (jar大小为56MB)
java -jar -Xms64M -Xmx256M build/libs/account-1.0.0-SNAPSHOT.jar
在我的Ubuntu系统监视器中,jar内存使用情况如下所示。
当我使用 YourKit 分析 jar 时,它显示如下,这不等于上面的内存使用量。
我在这里缺少什么?
I'm running a jar using this command. Note the memory parameters. (The jar size is 56MB)
java -jar -Xms64M -Xmx256M build/libs/account-1.0.0-SNAPSHOT.jar
In my Ubuntu System Monitor, the jar memory usage is shown as below.
When I profile the jar using YourKit, it shows below, which doesn't add up to above memory usage.
What am I missing here?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
jar 大小与 JVM 内存使用情况完全无关。
jar 可以保存类、接口,但也可能保存与 java 不直接相关的数据,如图像、属性文件、文本文件、json 等。
此外,仅包含单个类的 jar 无法与其内存使用量进行比较。事实上,jar 使用 jre 的类(String,ArrayList,...),这些类不存在于 jar 本身中,但加载到内存中。
您可以使用探查器检查内存,检查正在运行的应用程序的使用情况。基本上你可以回答这样的问题:
无论如何请记住,jar 的磁盘大小与 JVM 内存使用量绝对无关
The jar size is not related to the JVM memory usage at all.
A jar can hold classes, interfaces, but potentially also data that are not directly related to java like images, property files, text files, jsons and so on.
Also a jar holding only a single class cannot be compared with its memory usage. Infact the jar uses classes of the jre (String, ArrayList, ...) that are not present in the jar itself but are loaded in the memory.
What you can do examining the memory using a profiler is a check of the usage of the running application. Basically you can answers questions like:
In any case remember that the disk size of a jar is absolutely not related to the JVM memory usage