范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

检查Java元空间区域的内容

  每日分享最新,最流行的软件开发知识与最新行业趋势,希望大家能够一键三连,多多支持,跪求关注,点赞,留言。了解有关 JVM 以及如何检查 Java 元空间区域内容的更多信息。
  JVM 内存有以下区域:
  Young GenerationOld GenerationMetaspaceOthers region
  图:JVM 内存区域
  要查看哪些对象存储在哪个区域,您可以参考此视频剪辑。有时您的应用程序可能会遇到本文中讨论的 " java.lang.OutOfMemoryError: Metaspace"。在这种情况下,您可能希望查看 JVM 的 Metaspace 区域中加载了哪些内容。简而言之,JVM 内存中的 Metaspace 区域包含执行应用程序所需的类元数据定义。如果想了解类元数据定义是什么意思,可以参考这个文档. 它有很多细节,你可能不必了解它的所有细节。基本上,如果您能够了解加载到内存中的类是什么,那么它将很好地了解 JVM 内存的 Metaspace 区域中存在哪些内容。在这篇文章中,让我们探索可用于查看加载到元空间中的类的选项。
  以下是查看元空间中加载的类的选项:
  -verbose:class
  -Xlog:class+load
  jcmd GC.class_histogram
  Programmatic approach
  Heap Dump analysis
  让我们在这篇文章中详细讨论每个选项。
  1. -Verbose: Class
  如果您在 Java 版本 8 或更低版本上运行,则可以使用此选项。当您在启动期间将" -verbose:class"选项传递给您的应用程序时,它将打印所有加载到内存中的类。加载的类将打印在标准错误流中(即控制台,如果您没有将错误流路由到日志文件)。
  java {app_name} -verbose :class
  以下是传递"-verbose:class"参数时开源BuggyApp 程序的示例输出:
  [Opened C:Program FilesJavajre1.8.0_171librt.jar]
  [Loaded java.lang.Object from C:Program FilesJavajre1.8.0_171librt.jar]
  [Loaded java.io.Serializable from C:Program FilesJavajre1.8.0_171librt.jar]
  [Loaded java.lang.Comparable from C:Program FilesJavajre1.8.0_171librt.jar]
  [Loaded java.lang.CharSequence from C:Program FilesJavajre1.8.0_171librt.jar]
  [Loaded java.lang.String from C:Program FilesJavajre1.8.0_171librt.jar]
  [Loaded java.lang.reflect.AnnotatedElement from C:Program
  FilesJavajre1.8.0_171librt.jar]
  [Loaded java.lang.reflect.GenericDeclaration from C:Program
  FilesJavajre1.8.0_171librt.jar]
  [Loaded java.lang.reflect.Type from C:Program FilesJavajre1.8.0_171librt.jar]
  [Loaded java.lang.Class from C:Program FilesJavajre1.8.0_171librt.jar]
  [Loaded java.lang.Cloneable from C:Program FilesJavajre1.8.0_171librt.jar]
  [Loaded java.lang.ClassLoader from C:Program FilesJavajre1.8.0_171librt.jar]
  [Loaded java.lang.System from C:Program FilesJavajre1.8.0_171librt.jar]
  [Loaded java.lang.Throwable from C:Program FilesJavajre1.8.0_171librt.jar]
  [Loaded java.lang.Error from C:Program FilesJavajre1.8.0_171librt.jar]
  [Loaded java.lang.ThreadDeath from C:Program FilesJavajre1.8.0_171librt.jar]
  [Loaded java.lang.Exception from C:Program FilesJavajre1.8.0_171librt.jar]
  [Loaded java.lang.RuntimeException from C:Program FilesJavajre1.8.0_171librt.jar]
  [Loaded java.lang.SecurityManager from C:Program FilesJavajre1.8.0_171librt.jar]
  [Loaded java.security.ProtectionDomain from C:Program FilesJavajre1.8.0_171librt.jar]
  [Loaded java.security.AccessControlContext from C:Program
  FilesJavajre1.8.0_171librt.jar]
  [Loaded java.security.SecureClassLoader from C:Program
  FilesJavajre1.8.0_171librt.jar]
  [Loaded java.lang.ReflectiveOperationException from C:Program
  FilesJavajre1.8.0_171librt.jar]
  [Loaded java.lang.ClassNotFoundException from C:Program
  FilesJavajre1.8.0_171librt.jar]
  [Loaded java.lang.LinkageError from C:Program FilesJavajre1.8.0_171librt.jar]
  [Loaded java.lang.NoClassDefFoundError from C:Program FilesJavajre1.8.0_171librt.jar]
  [Loaded java.lang.ClassCastException from C:Program FilesJavajre1.8.0_171librt.jar]
  [Loaded java.lang.ArrayStoreException from C:Program FilesJavajre1.8.0_171librt.jar]
  [Loaded java.lang.VirtualMachineError from C:Program FilesJavajre1.8.0_171librt.jar]
  [Loaded java.lang.OutOfMemoryError from C:Program FilesJavajre1.8.0_171librt.jar]
  [Loaded java.lang.StackOverflowError from C:Program FilesJavajre1.8.0_171librt.jar]
  2.-Xlog:类+加载
  如果您在 Java 版本 9 或更高版本上运行,则可以使用此选项。当您在启动期间将"-Xlog:class+load"选项传递给您的应用程序时,它将打印所有加载到内存中的类。加载的类将打印在您配置的文件路径中。
  java {app_name} -Xlog:class+load=info:/opt/log/loadedClasses.txt以下是传递"-Xlog:class+load"参数时 java 程序的示例输出:
  [0.004s][info][class,load] opened: /home/ec2-user/jdk-9.0.4/lib/modules
  [0.006s][info][class,load] java.lang.Object source: jrt:/java.base
  [0.007s][info][class,load] java.io.Serializable source: jrt:/java.base
  [0.007s][info][class,load] java.lang.Comparable source: jrt:/java.base
  [0.007s][info][class,load] java.lang.CharSequence source: jrt:/java.base
  [0.007s][info][class,load] java.lang.String source: jrt:/java.base
  [0.007s][info][class,load] java.lang.reflect.AnnotatedElement source: jrt:/java.base
  [0.007s][info][class,load] java.lang.reflect.GenericDeclaration source: jrt:/java.base
  [0.007s][info][class,load] java.lang.reflect.Type source: jrt:/java.base
  [0.008s][info][class,load] java.lang.Class source: jrt:/java.base
  [0.008s][info][class,load] java.lang.Cloneable source: jrt:/java.base
  [0.008s][info][class,load] java.lang.ClassLoader source: jrt:/java.base
  [0.008s][info][class,load] java.lang.System source: jrt:/java.base
  [0.008s][info][class,load] java.lang.Throwable source: jrt:/java.base
  [0.008s][info][class,load] java.lang.Error source: jrt:/java.base
  [0.008s][info][class,load] java.lang.ThreadDeath source: jrt:/java.base
  [0.008s][info][class,load] java.lang.Exception source: jrt:/java.base
  [0.008s][info][class,load] java.lang.RuntimeException source: jrt:/java.base
  [0.008s][info][class,load] java.lang.SecurityManager source: jrt:/java.base
  [0.008s][info][class,load] java.security.ProtectionDomain source: jrt:/java.base
  [0.009s][info][class,load] java.security.AccessControlContext source: jrt:/java.base
  [0.009s][info][class,load] java.security.SecureClassLoader source: jrt:/java.base
  [0.009s][info][class,load] java.lang.ReflectiveOperationException source: jrt:/java.base
  [0.009s][info][class,load] java.lang.ClassNotFoundException source: jrt:/java.base
  [0.009s][info][class,load] java.lang.LinkageError source: jrt:/java.base
  [0.009s][info][class,load] java.lang.NoClassDefFoundError source: jrt:/java.base
  [0.009s][info][class,load] java.lang.ClassCastException source: jrt:/java.base
  [0.009s][info][class,load] java.lang.ArrayStoreException source: jrt:/java.base
  [0.009s][info][class,load] java.lang.VirtualMachineError source: jrt:/java.base
  [0.009s][info][class,load] java.lang.OutOfMemoryError source: jrt:/java.base
  [0.009s][info][class,load] java.lang.StackOverflowError source: jrt:/java.base
  [0.009s][info][class,load] java.lang.IllegalMonitorStateException source: jrt:/java.base
  [0.009s][info][class,load] java.lang.ref.Reference source: jrt:/java.base
  [0.009s][info][class,load] java.lang.ref.SoftReference source: jrt:/java.base
  [0.009s][info][class,load] java.lang.ref.WeakReference source: jrt:/java.base
  [0.009s][info][class,load] java.lang.ref.FinalReference source: jrt:/java.base
  [0.009s][info][class,load] java.lang.ref.PhantomReference source: jrt:/java.base
  [0.009s][info][class,load] java.lang.ref.Finalizer source: jrt:/java.base
  [0.009s][info][class,load] java.lang.Runnable source: jrt:/java.base
  [0.009s][info][class,load] java.lang.Thread source: jrt:/java.base
  [0.009s][info][class,load] java.lang.Thread$UncaughtExceptionHandler source:
  jrt:/java.base
  [0.009s][info][class,load] java.lang.ThreadGroup source: jrt:/java.base
  [0.010s][info][class,load] java.util.Map source: jrt:/java.base
  [0.010s][info][class,load] java.util.Dictionary source: jrt:/java.base
  [0.010s][info][class,load] java.util.Hashtable source: jrt:/java.base
  [0.010s][info][class,load] java.util.Properties source: jrt:/java.base
  [0.010s][info][class,load] java.lang.Module source: jrt:/java.base
  [0.010s][info][class,load] java.lang.reflect.AccessibleObject source: jrt:/java.base
  3. jcmd gc.class_histogram
  JDK 包含一个名为" jcmd"的工具。您可以在 JVM 运行时调用此工具来检查 Metaspace 区域的内容。当您使用" GC.class_histogram"参数调用此工具时,它将打印加载到内存中的类列表。您可以在两种模式下调用此工具:
  A. 在控制台上打印加载的类
  jcmd {pid} GC.class_histogram
  当您调用jcmd如上所示的""时,它将在控制台中打印所有加载的类。这里 {pid} 是您的 java 应用程序的进程 ID。
  B. 在文件上打印加载的类
  jcmd {pid} GC.class_histogram filename={file-path}
  当您jcmd如上所示调用""时,它将打印"filename"参数中指定的文件路径中的所有加载类。这里 {pid} 是您的 java 应用程序的进程 ID。
  这是一篇博客文章,可帮助您快速识别进程 ID。
  以下是传递"参数时开源BuggyApp程序的示例输出:jcmd GC.class_histogram’
  jcmd 19684 GC.class_histogram
  19684:
  num #instances #bytes class name   ----------------------------------------------   1: 143036 75523008 [Ljavassist.bytecode.ConstInfo;   2: 718060 70032224 [C   3: 1573553 50353696 java.util.HashMap$Node   4: 430124 24732832 [Ljava.lang.Object;   5: 1001290 24030960 javassist.bytecode.Utf8Info   6: 858268 20598432 java.util.ArrayList   7: 718037 17232888 java.lang.String   8: 144011 14987488 java.lang.Class   9: 143081 11447152 [Ljava.util.HashMap$Node;   10: 143036 9154304 javassist.bytecode.ClassFile   11: 143035 9154240 javassist.CtNewClass   12: 286124 6892400 [B   13: 143085 6868080 java.util.HashMap   14: 286078 6865872 javassist.bytecode.ClassInfo   15: 143036 6865728 [[Ljavassist.bytecode.ConstInfo;   16: 143049 5721960 javassist.bytecode.MethodInfo   17: 143042 5721680 javassist.bytecode.CodeAttribute   18: 143323 4586336 java.util.Hashtable$Entry   19: 143038 4577216 java.lang.ref.WeakReference   20: 143036 4577152 javassist.bytecode.ConstPool   21: 143045 3433080 javassist.bytecode.MethodrefInfo   22: 143045 3433080 javassist.bytecode.NameAndTypeInfo   23: 143042 3433008 javassist.bytecode.ExceptionTable   24: 143036 3432864 javassist.bytecode.LongVector   25: 143036 3432864 javassist.bytecode.SourceFileAttribute   26: 143622 2323336 [I   27: 10 788688 [Ljava.util.Hashtable$Entry;   28: 642 20544 java.util.concurrent.ConcurrentHashMap$Node   29: 244 13664 java.lang.invoke.MemberName   30: 341 10912 sun.misc.FDBigInteger   31: 212 8480 java.lang.ref.SoftReference   32: 140 8400 [Ljava.lang.ref.SoftReference;   33: 234 7488 java.lang.invoke.LambdaForm$Name   34: 176 7040 java.lang.invoke.MethodType   35: 256 6144 java.lang.Long   36: 16 6016 java.lang.Thread   37: 173 5880 [Ljava.lang.Class;   38: 366 5856 java.lang.Object   39: 177 5664 java.lang.invoke.MethodType$ConcurrentWeakInternSet$WeakEntry   40: 10 5280 [Ljava.util.concurrent.ConcurrentHashMap$Node;   41: 256 4096 java.lang.Byte   42: 256 4096 java.lang.Integer   43: 256 4096 java.lang.Short   44: 73 4088 java.lang.invoke.MethodTypeForm   45: 82 3808 [Ljava.lang.invoke.LambdaForm$Name;   46: 77 3696 java.lang.invoke.LambdaForm   4. 程序化方法   您还可以使用编程方法打印加载到内存中的类。开源 Guava 库提供 API 来打印加载的类。下面是利用 Guava 库在内存中打印加载的类的代码示例:   ClassPath classPath = ClassPath.from(BuggyAppLoader.class.getClassLoader());   Set classes = classPath.getAllClasses();   for(ClassInfo classInfo : classes) {   logger.info(classInfo.getName());   }   org.apache.catalina.core.AsyncContextImpl   org.apache.catalina.core.AsyncListenerWrapper   org.apache.catalina.core.Constants   org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor   org.apache.catalina.core.ContainerBase$PrivilegedAddChild   org.apache.catalina.core.ContainerBase$StartChild   org.apache.catalina.core.ContainerBase$StartStopThreadFactory   org.apache.catalina.core.ContainerBase$StopChild   org.apache.catalina.core.ContainerBase   org.apache.catalina.core.DefaultInstanceManager$1   org.apache.catalina.core.DefaultInstanceManager$2   org.apache.catalina.core.DefaultInstanceManager$3   org.apache.catalina.core.DefaultInstanceManager$AnnotationCacheEntry   org.apache.catalina.core.DefaultInstanceManager$AnnotationCacheEntryType   org.apache.catalina.core.DefaultInstanceManager   org.apache.catalina.core.JreMemoryLeakPreventionListener   org.apache.catalina.core.NamingContextListener   org.apache.catalina.core.StandardContext$1   org.apache.catalina.core.StandardContext$ContextFilterMaps   org.apache.catalina.core.StandardContext$NoPluggabilityServletContext   org.apache.catalina.core.StandardContext   org.apache.catalina.core.StandardContextValve   org.apache.catalina.core.StandardEngine$AccessLogListener   org.apache.catalina.core.StandardEngine$NoopAccessLog   org.apache.catalina.core.StandardEngine   org.apache.catalina.core.StandardEngineValve   org.apache.catalina.core.StandardHost$1   org.apache.catalina.core.StandardHost$MemoryLeakTrackingListener   org.apache.catalina.core.StandardHost   org.apache.catalina.core.StandardHostValve   org.apache.catalina.core.StandardPipeline   org.apache.catalina.core.StandardServer   org.apache.catalina.core.StandardService   org.apache.catalina.core.StandardThreadExecutor   org.apache.catalina.core.StandardWrapper   org.apache.catalina.core.StandardWrapperFacade   org.apache.catalina.core.StandardWrapperValve   org.apache.catalina.core.ThreadLocalLeakPreventionListener   5.堆转储分析   查看加载到内存中的类的另一个选项是检查堆转储。堆转储报告加载到内存中的所有数据、对象和类。您可以使用此处给出的一种方法来捕获堆转储。捕获堆转储后,您可以使用Eclipse MAT和HeapHero等堆转储分析工具来分析堆转储。   下面是 HeapHero 工具生成的报告的摘录,其中显示了加载到内存中的类。   你的记忆里有什么   注意:上面提到的所有方法都不会给您的应用程序增加明显的开销,但是堆转储方法是一种侵入性选项,它将给您的应用程序增加相当大的开销。捕获堆转储后,您的应用程序将暂停,直到捕获完成。

12月中国汽车商品进口额前十国德国居首,美日分列二三中新经纬4月4日电中汽协会数据微信号4日消息,据中国汽车工业协会整理的海关总署数据显示,2023年12月,汽车商品进口金额排名前十位国家依次是德国美国日本斯洛伐克英国墨西哥匈牙利法合成燃料避开欧洲汽车内燃机被一刀切,但挡不住电动化浪潮内燃机最先在欧洲被应用于现代汽车业,此后风靡了一个多世纪,如今却几经波折才得以在欧洲幸存下来。近日,欧盟成员国达成最终协议,批准从2035年起禁售化石燃料新车,不过将允许在2035(社会)走进三亚市崖州区国家现代农业产业园三亚市崖州区国家现代农业产业园作为2023年中国种子大会暨南繁硅谷论坛地展环节的展示基地,共展出200多家单位培育的近30个作物类型1800多个品种,吸引众多与会者前来参观。4月4深入解读丨济南起步区,经济雄心到底有多强鲁网4月4日讯因时代的演进,每一座城市,都会面临迭代与更新。其波澜壮阔的程度,丝毫不亚于板块漂移和大陆新生,因而随着城市定位和发力点的改变,总会有一些区域站在风口之上,横空出世。图中缅边境章凤口岸一季度进出口货值破8亿元图为章凤口岸通关现场。瑞丽边检站供图中新网德宏4月4日电(袁嫣魏涛)记者4日从瑞丽出入境边防检查站获悉,2023年一季度,中缅边境章凤口岸已累计完成进出口货运量24。88万吨,货值高端国产PCIe4。0固态硬盘超车!颗粒主控不拉跨,aigoP7000Z体验自从英特尔12代酷睿平台发布,电脑全面进化的大门算是正式打开了。不管是电脑游戏主机还是存储设备都全面迈向了DDR5时代,PCIeGen4。0固态硬盘也成为了主流。之前入手了一款迷你别样幼教故事齐鲁幼师之星张雅若向下扎根,向上生长记者王婷婷编者按学前教育是终身学习的开端。在学前教育舞台上,活跃着一批有理想有情操有学识有爱心的幼儿园老师。即日起,齐鲁晚报齐鲁壹点联合山东省学前教育中心重磅推出别样幼教故事系列报消防员进课堂这节消防安全教育课干货十足中国山东网感知山东4月4日讯(通讯员韩晴)近日,历下区百合幼教集团开展了消防员进课堂活动,孩子们和消防员叔叔进行了一次零距离互动,不仅了解了消防员的主要工作,还学习了消防知识,提高普惠托育,缓解带娃焦虑曹一作(新华社发)今年以来,福建省福州市鼓楼区积极发展婴幼儿托育服务,通过社区托育机构合作方式,着力拓展3岁以下普惠型婴幼儿照护服务。福州市鼓楼区安泰街道乌塔社区的一家托育园内,孩学思赋能,优势共享!省外名师培养组赴历下三幼嵘汇园学习近日,为进一步推进幼儿园园所文化建设,提升教师专业素养和幼儿园课程质量,进一步加强园际间交流合作,充分发挥辐射共长作用,济南市历下区第三实验幼儿园嵘汇园热情接待福建省邵武市漳州台上世界上10处最美沙漠,作者亲历后强力推荐,看看你喜欢哪一个沙漠,主要是指地面完全被细沙覆盖,雨水稀缺植物稀少空气干燥人烟罕至的荒芜地域。沙漠的形态大多是沙滩或沙丘,沙下也会有岩石出现,时常有沙漠和戈壁混搭的情况。近现代,在许多沙漠地区发现
缅怀中国女排前主教练李耀先临危受命,汉城奥运会拿第三6月20日,中国排球协会官方发布唁电,中国女排前主教练李耀先不幸因病去世,享年87岁。接受新京报记者采访时,中国女排前队长李国君直言恩师像父亲一样,唯一跟随中国女排获得5连冠的国手三人男篮世界杯,中国队四名球员履历,2位MVP1板王1射手文水清清北京时间6月21日,据媒体报道,明天即将拉开战幕的三人篮球世界杯,中国队最终确定的四人名单,他们分别是李浩南朱渊博颜鹏和郭瀚宇,他们的履历大体如下一MVP,李浩南。李浩南持得了青光眼,眼压高怎么缓解?患有青光眼的患者中有时会出现青光眼眼压高的情况,临床上会表现出恶心眼球部位肿胀视力下降,甚至还可能会出现失明等症状。引起青光眼眼压高的原因有很多,比如眼球自身的毛病或者是患者情绪的古建景观日渐重现!再现一个风貌完整的天坛北京日报记者李瑶邓伟游客在天坛公园游览。夏日北京,蓝绿交织。位于中轴线南端的天坛,风动蝉鸣,庄严静谧。外坛内侧,7600平方米的街边公园里,国槐成荫泡桐蔽日蔷薇绚烂,行人惬意休闲。减压?17个禅宗庭院创意,让休闲景观升级寻一片净土,释凡尘纷扰看山水河川,忆质朴乡愁一草一木,一石一树,置于天地成自然,置于庭院成景观。乡村资源不仅有自然之美,还有文化之魂。乡村不仅是农民的居住环境,还是都市人向往的田园全民福利!肇兴侗寨优惠政策来了01门票优惠优惠内容门票五折优惠对象全国人民优惠时间2022年6月129月30日02中高考毕业生优惠优惠内容免门票优惠对象全国2022年应届中高考学子(凭本人有效准考证)优惠时间2普陀山海军的故事(第三次重游)普陀山海军的故事(第三次重游)纪念逝去的普陀山海军岁月!自普陀山回成都已逾27载,先后在2002年2012年二次回普陀山游览,这是第三次重游。每次回到魂牵梦绕的普陀山,饱览它的美景日常医案湿热证患者孙某女48岁。近年来整日头苔白腻昏昏沉沉,沉困乏力提不起精神少动懒言汤便难解,粘马桶口苦口干心烦易怒左前臂有多个脂肪瘤。舌质紫暗脉象濡缓。舌象分析舌质紫暗有淤血点舌苔白腻舌中间6种疗法帮助你告别颈部疼痛非常病例据统计,大约10的成年人会在某个时候出现颈部疼痛,超过65的人一生中经历过一次。颈部疼痛的最常见原因是过度运动睡眠坐姿不良长时间坐在同一位置以及压力过大。但是有办法缓解,下头痛是什么原因造成的?可能在平时生活中很多人都有出现过头痛的情况,大多数人可能和我一样,认为头痛只是一点小病,忍一下就过去了,通常情况下,这样理解是没有错,但是我们不要忽略了一些其他的疾病所造成的头痛情刘君主任癫痫患者日常生活中,最害怕什么?癫痫患者在日常生活中最怕接触各种可以诱发癫痫发作的因素,比如说用药不规律声音或光线的刺激情绪明显波动不规律的作息饮食刺激头部外伤等,其中最主要的,也就是最怕的是用药不规律。1用药不