java - Java 应用程序中已加载类的数量可能存在内存泄漏

标签 java profiling

我最近开始分析我使用 VisualVM 编写的 osgi java 应用程序。我注意到的一件事是,当应用程序开始向客户端发送数据(通过 JMS)时,加载的类的数量开始以稳定的速度增加。但是,堆大小和 PermGen 大小保持不变。类的数量永远不会下降,即使在它停止发送数据之后也是如此。这是内存泄漏吗?我认为是的,因为加载的类必须存储在某个地方,但是即使我运行应用程序几个小时后堆和 permgen 也不会增加。

要获取我的分析应用程序的屏幕截图,请转到 here

最佳答案

Are you dynamically creating new classes on the fly somehow?

感谢您的帮助。我想出了问题是什么。在我的一个类(class)中,我使用 Jaxb 创建 XML 字符串。为此,JAXB 使用反射来创建一个新类。

JAXBContext context = JAXBContext.newInstance(this.getClass());

因此,尽管 JAXBContext 并未在堆中循环,但类已被加载。

我再次运行我的程序,如我所料,我看到了一个正常的平台。

关于java - Java 应用程序中已加载类的数量可能存在内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/167740/

相关文章:

java - Swing JFrame 按钮操作监听器不工作

java - 无法从 Fedora 30 中删除 java-11-amazon-corretto-devel

java - 如何防止eclipse格式化程序删除 block 注释中的 "alignment spaces"?

android - 如何找出Android logcat消息 "Skipped n frames. Too much work on main thread"的原因

javascript - 对jQuery进行性能分析,如何使我的应用程序更生动?

android - 如何在没有应用程序源代码的情况下获取 Android 应用程序在主要 Activity 启动时调用的方法的踪迹?

java - 如何用JPA注解Map<Entity,INTEGER>?

java - 从 Java 调用 PL/SQL 函数时为 "SQLException: ORA-06550"

python - 减少 Django 内存使用。低悬的果实?

node.js - nodejs内存分析