性能问答>内存 Dump 文件中“sun.reflect.DelegatingClassLoader” 和 “sun.reflect.GeneratedMethodAccessor*” 都是些啥对象呢?>
17回复
4年前

内存 Dump 文件中“sun.reflect.DelegatingClassLoader” 和 “sun.reflect.GeneratedMethodAccessor*” 都是些啥对象呢?


环境参数
  • 操作系统Linux
  • 操作系统版本Centos7
  • JDK版本JDK8
  • 内存4GB
  • CPU核数2
  • 操作系统位数64位
33166.bin52.53MB
查看详情

问题描述

各位大佬,这是一个由于 Metaspace 导致的频繁 full gc 的内存 dump 文件,对应的 JVM 参数为:

-XX:MetaspaceSize=128M
-XX:MaxMetaspaceSize=128M
-Xms2g
-Xmx2g
-XX:+UseConcMarkSweepGC
-XX:CMSInitiatingOccupancyFraction=75
-XX:+UseCMSInitiatingOccupancyOnly
-XX:+PrintGCTimeStamps
-XX:+PrintGCDetails
-XX:+PrintHeapAtGC
-Dsun.reflect.noInflation=true
-Dsun.reflect.inflationThreshold=0

分析的过程中发现以下异常情况,不知道是为啥,还请知道的大佬帮忙分析一下。

截图如下

  1. 很多这种类的 sun.reflect.DelegatingClassLoader 实例对象,多达 1500 多个
    image.png

  2. 很多这种类的 sun.reflect.GeneratedMethodAccessor* 对象,且最后的数字都高达6914
    image.png

提问

  1. 这些对象都是啥?
  2. 为啥会产生这些对象?
  3. 这些对象对 Metaspace 会产生啥影响?
关联了该问题的文章:
23388 阅读
请先登录,查看17条精彩评论吧
快去登录吧,你将获得
  • 浏览更多精彩评论
  • 和开发者讨论交流,共同进步