我最近开始分析我正在使用VisualVM编写的osgi java应用程序.我注意到的一件事是,当应用程序开始向客户端(通过JMS)发送数据时,加载的类的数量开始以稳定的速率增加.然而,堆大小和PermGen大小保持不变.即使在停止发送数据之后,类的数量也永远不会下降.这是内存泄漏吗?我认为是这样,因为加载的类必须存储在某个地方,但是即使在我运行应用程序几个小时后,堆和permgen也不会增加.
有关我的分析应用程序的屏幕截图,请转到此处
你是否动态地动态创建新类?
谢谢你的帮助.我弄清楚问题是什么.在我的一个类中,我使用Jaxb创建XML字符串.在这样做时,JAXB使用反射来创建一个新类.
JAXBContext context = JAXBContext.newInstance(this.getClass());
因此,虽然JAXBContext没有在堆中说,但是已经加载了类.
我再次运行我的程序,我看到正常的高原,正如我所料.