jprofiler调查openfire内存泄露
windows下,调试本机程序建议直接使用向导New Server Integration
选择gerneral server application
一路下一步,最后会生成需要添加的jvm参数,将其添加到java 命令后,对于windows下openfire,则是在openfired.vmoptions中添加。
如果发现此问题:
java.lang.NoClassDefFoundError: com/jprofiler/agent/InstrumentationCallee
则应检查加在openfired.vmoptions中的参数,在windows下,应该是
-agentlib:jprofilerti=port=18849
-Xbootclasspath/a:D:\Program Files\jprofiler5\bin\agent.jar
注意是两行,不要双引号 (上面的值是通过配置向导生成的)
比较常用的是Heap Walker,生成快照选择指定类,然后可在references视图中看到引用,这对内存泄漏原因查找很有帮助。
结果发现内存逐渐上升,gc之后没有回到原来水平,主要是log4j的类使用char[]较多,将log4j日志级别设置为error,再观察似乎内存水平较平缓,尚待继续观察。
参考: