我正在努力提高我的网络应用程序的性能,所以我决定对其进行分析。
执行此操作时,我注意到在启动任务管理器时完成了一个漫长的过程后,我看到 java.exe 占用了太多内存。
顺便说一句,我在进程完成且 cpu 处于稳定状态后 2-3 小时后检查了它。
我在探查器的 VM 基本 View 中看到,已用内存为 5 GB,可用内存为 15 GB,在任务管理器中,java.exe 使用的总内存为 41 GB.
这是什么空闲内存?
是不是像现在这么多内存会被java占用?
我注意到随着进程开始和运行,使用的内存和空闲内存都在增长,但完成后使用的内存减少但没有空闲内存。
请问是我的申请有问题还是正常?
最佳答案
分析器通常会显示堆内存使用情况。因此,可能正在使用 5 GB 的堆,还有 15 GB 可用。任务管理器显示进程使用的总内存,其中包括堆内存和非堆内存,例如 Sun JVM 中的“Perm Gen”内存。 以下帖子提供了很好的资源集合,可以详细了解这一点。
关于java - Java中的已用和空闲内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9630192/