作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想在 Java 1.5 应用程序中查找内存泄漏。我使用 JProfiler 进行分析。我使用 Windows 任务管理器看到我的应用程序的虚拟机大小约为 790000KB(从大约 300000KB 增加)。在探查器中,我看到分配的堆为 266MB(也在增加)。
这可能是一个菜鸟问题,但是,除了堆之外,还有什么可以占用如此多的内存,使其达到大约 700MB 虚拟机大小(或私有(private)字节大小)?
我提到,根据 here 的回答,大约有 1200 个线程正在运行,可以占用这些线程。相当大的内存,但我认为在700MB之前还有一些空间。顺便问一下,如何查看线程堆栈占用了多少内存?
谢谢。
最佳答案
JVM 可以使用大量虚拟内存,但可能不使用常驻内存。启动时,它会分配堆,并映射到其共享库中。加载的类使用 Perm Gen 空间。应用程序可以使用与堆最大值一样大的直接内存。创建每个线程时,会为每个线程分配一个堆栈。在每种情况下,直到使用该内存之前,它可能不会分配给应用程序,即不使用物理内存。随着应用程序预热,更多的虚拟内存可以变成物理内存。
如果您认为您的 JVM 运行效率不高,我首先会尝试的是 Java 6,自上次发布 Java 5.0 以来,它已经进行了许多修复和改进。
关于java - vm 大小(任务管理器)与 java 应用程序堆大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6662823/
我是一名优秀的程序员,十分优秀!