我有一个使用Tomcat Webserver构建的Java应用程序。 使用Java任务控制我知道在压力下,GC非常占优势。每个GC周期中,CPU都非常高。 我想知道的是,每个GC循环都在做什么,特别是我想知道它正在推广哪个对象,以及哪个对象正在释放。对于被释放的对象,我想知道,不仅是它们是什么类型,而且它们是在哪里创建的。只知道我有很多字节[]或字符串,显然没有帮助,因为有很多地方可以创建这些地方,但只有少数地方在我的控制之下并占主导地位。Java GC很高,如何找出哪些对象是GCed
有没有人知道这样做的工具或方法。
在此先感谢。
您是否使用了[Flight recording](https://docs.oracle.com/javase/8/docs/technotes/guides/troubleshoot/tooldescr005.html)? – nullpointer
是的,飞行记录仪是我发现GC导致CPU峰值的原因。但是,JFR不会提供我需要/描述的信息。或者至少我不知道如何获取该信息 –
GC日志以及您的JFR配置文件可以很好地了解原因。 – nullpointer