gpt4 book ai didi

java - vm 大小(任务管理器)与 java 应用程序堆大小

转载 作者:行者123 更新时间:2023-12-01 05:43:00 27 4
gpt4 key购买 nike

我想在 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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com