在jvm参数中添加了"-verbose:class“,并得到了10k次日志,如下所示:”从-verbose:class加载sun.reflect.GeneratedMethodAccessor10004“
我是否有任何方法来查找原始类,导致这种情况的是我的应用程序的根方法?
我知道"GeneratedMethodAccessor###是通过反射实现来调用方法和构造函数在运行时生成的类“,但是我不知道加载的具体方法或类是什么?
发布于 2021-07-05 15:14:51
异步分析器可以帮助查找生成这些MethodAccessors的位置。
跑
./profiler.sh -d 120 -e sun.reflect.MethodAccessorGenerator.generate -f report.html <javaPID>
这将开始记录120秒。所有用于调用Method.invoke
和Constructor.newInstance
的生成的Method.invoke
将被捕获并保存为report.html
下的Flame。
Flame图显示了生成的访问器的数量,这些访问器具有它们的原始堆栈跟踪:
或者,要在运行时附加分析器,可以从一开始就启用分析器启动Java:
java -agentpath:/path/to/libasyncProfiler.so=start,event=sun.reflect.MethodAccessorGenerator.generate,file=report.html -jar <your application>
https://stackoverflow.com/questions/68256999
复制相似问题