繁体   English   中英

Java应用程序内存大小

[英]Java application memory size

当IntelliJ或Eclipse正在运行时,我可以从底部的进度条看到它们在应用程序内部使用了多少堆...它总是指示一个512 MB的子值,它是启动时分配的最大大小。 现在在很多情况下,如果我从操作系统(Linux)看,它说该应用程序使用大约1300 MB,我理解库,堆栈,内存映射文件,...不在堆...但为什么差别那么大? 通常有大约1GB的差异......为什么?

谢谢。

可以通过此图像解释JVM内存使用情况:

JVM内存使用情况

如您所见,它不仅仅是-Xmx 总进程内存还包括-XX:PermSize ,所有线程的堆栈大小,JIT和其他内部使用的JVM内存。 不要忘记也包含在进程内存中的内存映射文件。 IntelliJ IDEA将内存映射文件用于缓存,因此它可以添加几百兆字节。

如果您需要详细信息,请使用JConsole或YourKit等分析器。

值得记住的是,Java在启动时分配了最大堆大小,这显示在虚拟内存大小中。 (默认情况下,这与您拥有的内存量成比例)这可能比实际使用的主内存大得多。

我怀疑你正在看这个虚拟内存而不是常驻内存。

如果你在linux上使用pmap,你可以看到所有内存映射区域及其大小。

如果在Windows上使用打开的项目重新启动IntelliJ,则表示它使用35 MB的大约100 MB,最大使用494 M. 在任务管理器中,它说大小为173 MB私有,总共196 MB。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM