城市直播房产教育博客汽车
投稿投诉
汽车报价
买车新车
博客专栏
专题精品
教育留学
高考读书
房产家居
彩票视频
直播黑猫
投资微博
城市上海
政务旅游

检查Java元空间区域的内容

9月21日 听风行投稿
  每日分享最新,最流行的软件开发知识与最新行业趋势,希望大家能够一键三连,多多支持,跪求关注,点赞,留言。了解有关JVM以及如何检查Java元空间区域内容的更多信息。
  JVM内存有以下区域:
  YoungGenerationOldGenerationMetaspaceOthersregion
  图:JVM内存区域
  要查看哪些对象存储在哪个区域,您可以参考此视频剪辑。有时您的应用程序可能会遇到本文中讨论的java。lang。OutOfMemoryError:Metaspace。在这种情况下,您可能希望查看JVM的Metaspace区域中加载了哪些内容。简而言之,JVM内存中的Metaspace区域包含执行应用程序所需的类元数据定义。如果想了解类元数据定义是什么意思,可以参考这个文档。它有很多细节,你可能不必了解它的所有细节。基本上,如果您能够了解加载到内存中的类是什么,那么它将很好地了解JVM内存的Metaspace区域中存在哪些内容。在这篇文章中,让我们探索可用于查看加载到元空间中的类的选项。
  以下是查看元空间中加载的类的选项:
  verbose:class
  Xlog:classload
  jcmdGC。classhistogram
  Programmaticapproach
  HeapDumpanalysis
  让我们在这篇文章中详细讨论每个选项。
  1。Verbose:Class
  如果您在Java版本8或更低版本上运行,则可以使用此选项。当您在启动期间将verbose:class选项传递给您的应用程序时,它将打印所有加载到内存中的类。加载的类将打印在标准错误流中(即控制台,如果您没有将错误流路由到日志文件)。
  java{appname}verbose:class
  以下是传递verbose:class参数时开源BuggyApp程序的示例输出:
  〔OpenedC:ProgramFilesJavajre1。8。0171librt。jar〕
  〔Loadedjava。lang。ObjectfromC:ProgramFilesJavajre1。8。0171librt。jar〕
  〔Loadedjava。io。SerializablefromC:ProgramFilesJavajre1。8。0171librt。jar〕
  〔Loadedjava。lang。ComparablefromC:ProgramFilesJavajre1。8。0171librt。jar〕
  〔Loadedjava。lang。CharSequencefromC:ProgramFilesJavajre1。8。0171librt。jar〕
  〔Loadedjava。lang。StringfromC:ProgramFilesJavajre1。8。0171librt。jar〕
  〔Loadedjava。lang。reflect。AnnotatedElementfromC:Program
  FilesJavajre1。8。0171librt。jar〕
  〔Loadedjava。lang。reflect。GenericDeclarationfromC:Program
  FilesJavajre1。8。0171librt。jar〕
  〔Loadedjava。lang。reflect。TypefromC:ProgramFilesJavajre1。8。0171librt。jar〕
  〔Loadedjava。lang。ClassfromC:ProgramFilesJavajre1。8。0171librt。jar〕
  〔Loadedjava。lang。CloneablefromC:ProgramFilesJavajre1。8。0171librt。jar〕
  〔Loadedjava。lang。ClassLoaderfromC:ProgramFilesJavajre1。8。0171librt。jar〕
  〔Loadedjava。lang。SystemfromC:ProgramFilesJavajre1。8。0171librt。jar〕
  〔Loadedjava。lang。ThrowablefromC:ProgramFilesJavajre1。8。0171librt。jar〕
  〔Loadedjava。lang。ErrorfromC:ProgramFilesJavajre1。8。0171librt。jar〕
  〔Loadedjava。lang。ThreadDeathfromC:ProgramFilesJavajre1。8。0171librt。jar〕
  〔Loadedjava。lang。ExceptionfromC:ProgramFilesJavajre1。8。0171librt。jar〕
  〔Loadedjava。lang。RuntimeExceptionfromC:ProgramFilesJavajre1。8。0171librt。jar〕
  〔Loadedjava。lang。SecurityManagerfromC:ProgramFilesJavajre1。8。0171librt。jar〕
  〔Loadedjava。security。ProtectionDomainfromC:ProgramFilesJavajre1。8。0171librt。jar〕
  〔Loadedjava。security。AccessControlContextfromC:Program
  FilesJavajre1。8。0171librt。jar〕
  〔Loadedjava。security。SecureClassLoaderfromC:Program
  FilesJavajre1。8。0171librt。jar〕
  〔Loadedjava。lang。ReflectiveOperationExceptionfromC:Program
  FilesJavajre1。8。0171librt。jar〕
  〔Loadedjava。lang。ClassNotFoundExceptionfromC:Program
  FilesJavajre1。8。0171librt。jar〕
  〔Loadedjava。lang。LinkageErrorfromC:ProgramFilesJavajre1。8。0171librt。jar〕
  〔Loadedjava。lang。NoClassDefFoundErrorfromC:ProgramFilesJavajre1。8。0171librt。jar〕
  〔Loadedjava。lang。ClassCastExceptionfromC:ProgramFilesJavajre1。8。0171librt。jar〕
  〔Loadedjava。lang。ArrayStoreExceptionfromC:ProgramFilesJavajre1。8。0171librt。jar〕
  〔Loadedjava。lang。VirtualMachineErrorfromC:ProgramFilesJavajre1。8。0171librt。jar〕
  〔Loadedjava。lang。OutOfMemoryErrorfromC:ProgramFilesJavajre1。8。0171librt。jar〕
  〔Loadedjava。lang。StackOverflowErrorfromC:ProgramFilesJavajre1。8。0171librt。jar〕
  2。Xlog:类加载
  如果您在Java版本9或更高版本上运行,则可以使用此选项。当您在启动期间将Xlog:classload选项传递给您的应用程序时,它将打印所有加载到内存中的类。加载的类将打印在您配置的文件路径中。
  java{appname}Xlog:classloadinfo:optlogloadedClasses。txt以下是传递Xlog:classload参数时java程序的示例输出:
  〔0。004s〕〔info〕〔class,load〕opened:homeec2userjdk9。0。4libmodules
  〔0。006s〕〔info〕〔class,load〕java。lang。Objectsource:jrt:java。base
  〔0。007s〕〔info〕〔class,load〕java。io。Serializablesource:jrt:java。base
  〔0。007s〕〔info〕〔class,load〕java。lang。Comparablesource:jrt:java。base
  〔0。007s〕〔info〕〔class,load〕java。lang。CharSequencesource:jrt:java。base
  〔0。007s〕〔info〕〔class,load〕java。lang。Stringsource:jrt:java。base
  〔0。007s〕〔info〕〔class,load〕java。lang。reflect。AnnotatedElementsource:jrt:java。base
  〔0。007s〕〔info〕〔class,load〕java。lang。reflect。GenericDeclarationsource:jrt:java。base
  〔0。007s〕〔info〕〔class,load〕java。lang。reflect。Typesource:jrt:java。base
  〔0。008s〕〔info〕〔class,load〕java。lang。Classsource:jrt:java。base
  〔0。008s〕〔info〕〔class,load〕java。lang。Cloneablesource:jrt:java。base
  〔0。008s〕〔info〕〔class,load〕java。lang。ClassLoadersource:jrt:java。base
  〔0。008s〕〔info〕〔class,load〕java。lang。Systemsource:jrt:java。base
  〔0。008s〕〔info〕〔class,load〕java。lang。Throwablesource:jrt:java。base
  〔0。008s〕〔info〕〔class,load〕java。lang。Errorsource:jrt:java。base
  〔0。008s〕〔info〕〔class,load〕java。lang。ThreadDeathsource:jrt:java。base
  〔0。008s〕〔info〕〔class,load〕java。lang。Exceptionsource:jrt:java。base
  〔0。008s〕〔info〕〔class,load〕java。lang。RuntimeExceptionsource:jrt:java。base
  〔0。008s〕〔info〕〔class,load〕java。lang。SecurityManagersource:jrt:java。base
  〔0。008s〕〔info〕〔class,load〕java。security。ProtectionDomainsource:jrt:java。base
  〔0。009s〕〔info〕〔class,load〕java。security。AccessControlContextsource:jrt:java。base
  〔0。009s〕〔info〕〔class,load〕java。security。SecureClassLoadersource:jrt:java。base
  〔0。009s〕〔info〕〔class,load〕java。lang。ReflectiveOperationExceptionsource:jrt:java。base
  〔0。009s〕〔info〕〔class,load〕java。lang。ClassNotFoundExceptionsource:jrt:java。base
  〔0。009s〕〔info〕〔class,load〕java。lang。LinkageErrorsource:jrt:java。base
  〔0。009s〕〔info〕〔class,load〕java。lang。NoClassDefFoundErrorsource:jrt:java。base
  〔0。009s〕〔info〕〔class,load〕java。lang。ClassCastExceptionsource:jrt:java。base
  〔0。009s〕〔info〕〔class,load〕java。lang。ArrayStoreExceptionsource:jrt:java。base
  〔0。009s〕〔info〕〔class,load〕java。lang。VirtualMachineErrorsource:jrt:java。base
  〔0。009s〕〔info〕〔class,load〕java。lang。OutOfMemoryErrorsource:jrt:java。base
  〔0。009s〕〔info〕〔class,load〕java。lang。StackOverflowErrorsource:jrt:java。base
  〔0。009s〕〔info〕〔class,load〕java。lang。IllegalMonitorStateExceptionsource:jrt:java。base
  〔0。009s〕〔info〕〔class,load〕java。lang。ref。Referencesource:jrt:java。base
  〔0。009s〕〔info〕〔class,load〕java。lang。ref。SoftReferencesource:jrt:java。base
  〔0。009s〕〔info〕〔class,load〕java。lang。ref。WeakReferencesource:jrt:java。base
  〔0。009s〕〔info〕〔class,load〕java。lang。ref。FinalReferencesource:jrt:java。base
  〔0。009s〕〔info〕〔class,load〕java。lang。ref。PhantomReferencesource:jrt:java。base
  〔0。009s〕〔info〕〔class,load〕java。lang。ref。Finalizersource:jrt:java。base
  〔0。009s〕〔info〕〔class,load〕java。lang。Runnablesource:jrt:java。base
  〔0。009s〕〔info〕〔class,load〕java。lang。Threadsource:jrt:java。base
  〔0。009s〕〔info〕〔class,load〕java。lang。ThreadUncaughtExceptionHandlersource:
  jrt:java。base
  〔0。009s〕〔info〕〔class,load〕java。lang。ThreadGroupsource:jrt:java。base
  〔0。010s〕〔info〕〔class,load〕java。util。Mapsource:jrt:java。base
  〔0。010s〕〔info〕〔class,load〕java。util。Dictionarysource:jrt:java。base
  〔0。010s〕〔info〕〔class,load〕java。util。Hashtablesource:jrt:java。base
  〔0。010s〕〔info〕〔class,load〕java。util。Propertiessource:jrt:java。base
  〔0。010s〕〔info〕〔class,load〕java。lang。Modulesource:jrt:java。base
  〔0。010s〕〔info〕〔class,load〕java。lang。reflect。AccessibleObjectsource:jrt:java。base
  3。jcmdgc。classhistogram
  JDK包含一个名为jcmd的工具。您可以在JVM运行时调用此工具来检查Metaspace区域的内容。当您使用GC。classhistogram参数调用此工具时,它将打印加载到内存中的类列表。您可以在两种模式下调用此工具:
  A。在控制台上打印加载的类
  jcmd{pid}GC。classhistogram
  当您调用jcmd如上所示的时,它将在控制台中打印所有加载的类。这里{pid}是您的java应用程序的进程ID。
  B。在文件上打印加载的类
  jcmd{pid}GC。classhistogramfilename{filepath}
  当您jcmd如上所示调用时,它将打印filename参数中指定的文件路径中的所有加载类。这里{pid}是您的java应用程序的进程ID。
  这是一篇博客文章,可帮助您快速识别进程ID。
  以下是传递参数时开源BuggyApp程序的示例输出:jcmdGC。classhistogram’
  jcmd19684GC。classhistogram
  19684:hrnuminstancesbytesclassname
  1:14303675523008〔Ljavassist。bytecode。ConstI
  2:71806070032224〔C
  3:157355350353696java。util。HashMapNode
  4:43012424732832〔Ljava。lang。O
  5:100129024030960javassist。bytecode。Utf8Info
  6:85826820598432java。util。ArrayList
  7:71803717232888java。lang。String
  8:14401114987488java。lang。Class
  9:14308111447152〔Ljava。util。HashMapN
  10:1430369154304javassist。bytecode。ClassFile
  11:1430359154240javassist。CtNewClass
  12:2861246892400〔B
  13:1430856868080java。util。HashMap
  14:2860786865872javassist。bytecode。ClassInfo
  15:1430366865728〔〔Ljavassist。bytecode。ConstI
  16:1430495721960javassist。bytecode。MethodInfo
  17:1430425721680javassist。bytecode。CodeAttribute
  18:1433234586336java。util。HashtableEntry
  19:1430384577216java。lang。ref。WeakReference
  20:1430364577152javassist。bytecode。ConstPool
  21:1430453433080javassist。bytecode。MethodrefInfo
  22:1430453433080javassist。bytecode。NameAndTypeInfo
  23:1430423433008javassist。bytecode。ExceptionTable
  24:1430363432864javassist。bytecode。LongVector
  25:1430363432864javassist。bytecode。SourceFileAttribute
  26:1436222323336〔I
  27:10788688〔Ljava。util。HashtableE
  28:64220544java。util。concurrent。ConcurrentHashMapNode
  29:24413664java。lang。invoke。MemberName
  30:34110912sun。misc。FDBigInteger
  31:2128480java。lang。ref。SoftReference
  32:1408400〔Ljava。lang。ref。SoftR
  33:2347488java。lang。invoke。LambdaFormName
  34:1767040java。lang。invoke。MethodType
  35:2566144java。lang。Long
  36:166016java。lang。Thread
  37:1735880〔Ljava。lang。C
  38:3665856java。lang。Object
  39:1775664java。lang。invoke。MethodTypeConcurrentWeakInternSetWeakEntry
  40:105280〔Ljava。util。concurrent。ConcurrentHashMapN
  41:2564096java。lang。Byte
  42:2564096java。lang。Integer
  43:2564096java。lang。Short
  44:734088java。lang。invoke。MethodTypeForm
  45:823808〔Ljava。lang。invoke。LambdaFormN
  46:773696java。lang。invoke。LambdaForm
  4。程序化方法
  您还可以使用编程方法打印加载到内存中的类。开源Guava库提供API来打印加载的类。下面是利用Guava库在内存中打印加载的类的代码示例:
  ClassPathclassPathClassPath。from(BuggyAppLoader。class。getClassLoader());
  SetclassesclassPath。getAllClasses();
  for(ClassInfoclassInfo:classes){
  logger。info(classInfo。getName());
  }
  org。apache。catalina。core。AsyncContextImpl
  org。apache。catalina。core。AsyncListenerWrapper
  org。apache。catalina。core。Constants
  org。apache。catalina。core。ContainerBaseContainerBackgroundProcessor
  org。apache。catalina。core。ContainerBasePrivilegedAddChild
  org。apache。catalina。core。ContainerBaseStartChild
  org。apache。catalina。core。ContainerBaseStartStopThreadFactory
  org。apache。catalina。core。ContainerBaseStopChild
  org。apache。catalina。core。ContainerBase
  org。apache。catalina。core。DefaultInstanceManager1
  org。apache。catalina。core。DefaultInstanceManager2
  org。apache。catalina。core。DefaultInstanceManager3
  org。apache。catalina。core。DefaultInstanceManagerAnnotationCacheEntry
  org。apache。catalina。core。DefaultInstanceManagerAnnotationCacheEntryType
  org。apache。catalina。core。DefaultInstanceManager
  org。apache。catalina。core。JreMemoryLeakPreventionListener
  org。apache。catalina。core。NamingContextListener
  org。apache。catalina。core。StandardContext1
  org。apache。catalina。core。StandardContextContextFilterMaps
  org。apache。catalina。core。StandardContextNoPluggabilityServletContext
  org。apache。catalina。core。StandardContext
  org。apache。catalina。core。StandardContextValve
  org。apache。catalina。core。StandardEngineAccessLogListener
  org。apache。catalina。core。StandardEngineNoopAccessLog
  org。apache。catalina。core。StandardEngine
  org。apache。catalina。core。StandardEngineValve
  org。apache。catalina。core。StandardHost1
  org。apache。catalina。core。StandardHostMemoryLeakTrackingListener
  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。堆转储分析
  查看加载到内存中的类的另一个选项是检查堆转储。堆转储报告加载到内存中的所有数据、对象和类。您可以使用此处给出的一种方法来捕获堆转储。捕获堆转储后,您可以使用EclipseMAT和HeapHero等堆转储分析工具来分析堆转储。
  下面是HeapHero工具生成的报告的摘录,其中显示了加载到内存中的类。
  你的记忆里有什么
  注意:上面提到的所有方法都不会给您的应用程序增加明显的开销,但是堆转储方法是一种侵入性选项,它将给您的应用程序增加相当大的开销。捕获堆转储后,您的应用程序将暂停,直到捕获完成。
投诉 评论 转载

科学家在金星上发现了生命存在的证据?生命的伟大,将超出想象金星可以说是太阳系中,与地球最为相似的类地行星了。它的质量和大小与地球相仿,同样处于太阳系的宜居带内,而且还拥有浓密的大气层。另外,它在所有行星中,是距离地球最近的一颗。所以在……立秋后怎么养生?不知道你就亏大了云天收夏色木叶动秋声今日立秋立秋是秋季的第一个节气,此时自然界中的阳气渐收,阴气渐长,虽然暑气和热气犹在,但凉风已经不远了。根据中医理论和经验,立秋养生……8974!中国男篮U18大爆发,韩国U18整体受压制,6分钟北京时间2022年8月23晶晚,男篮亚锦赛小组赛第二轮迎来了一场重要对决,韩国男篮U18节赛战中国男篮U18。结果,韩国男篮分别以1728、1923、1615、2223,总比分……十梅庵的梅你最怀念家乡的什么十梅庵的梅在山下,十梅庵赏梅到梅园。每年春节过后不长时间梅园里梅花盛开,姹紫嫣红,大量游客都会来此观赏一睹为快,生于斯长于斯我当然也会去。……检查Java元空间区域的内容每日分享最新,最流行的软件开发知识与最新行业趋势,希望大家能够一键三连,多多支持,跪求关注,点赞,留言。了解有关JVM以及如何检查Java元空间区域内容的更多信息。JVM……CBA三消息福建双外援已敲定,孙铭徽引起争议,李京龙恐被放弃大家好呀,我是北柠,各位小伙伴们要养成先赞后看的习惯哦!福建队最近几个赛季一直是联盟中的一支鱼腩球队,不过他们其实并没有放弃变强的希望,去年休赛期的时候,福建队正式开启重……曝湾区翼龙憋大招!2700万抢郭艾伦打脸CBA,姚明不能承受北京时间8月10日,郭艾伦的下家再度传来了关键变数,CBA名宿、也是曾经在天津队效力的孟祥宇带来了爆料,郭少可能遭遇到湾区翼龙队400万美元的疯狂强挖。换算成人民币,这是……苏炳添因发烧取消赛季首秀新华社北京6月26日电中国飞人苏炳添25日在社交媒体个人账号上称,自己因发烧取消参加在美国举行的比赛。这意味着他2022赛季的首秀推迟,他同时晒出了自己新冠抗原检测阴性结果。……是电商杀死了实体经济吗?其实自从淘宝所代表的电子商务异军突起之后,中文互联网上就一直在讨论一个问题。电子商务的出现杀死了实体店,摧毁了小市民经济,形成了互联网巨头垄断皮总一开始也是持有这个……库娃久违上热搜!丈夫当众狂亲粉丝,生仨娃的俄罗斯美少女被同情安娜库尔尼科娃(AnnaKournikova),曾经是世界网坛上的最耀眼的明星之一,也是众多俄罗斯网球美少女娃中的佼佼者,库娃在球场内外的表现,都能让她占据热搜。据悉,在……最新发现地球内部正在变冷,将产生什么影响?众所周知,由于温室效应,全球气候仍处于变暖的趋势之中,刚过去的2021平均气温比基期高0。3度。与地表气候变暖相反,最近,瑞士苏黎世理工大学的科学研究指出,地球内部正在变冷。……全明星票选第八天,勇士或有三名球员入选,库里首发已没有悬念距离2022年NBA全明星赛正式开打只有一个月的时间了,而全明星票选也到了第八天,如果一切进展顺利,金州勇士队将有三名球员参加在今年2月在克利夫兰举行的全明星正赛,德雷蒙德格林……
2022年11月半导体市场行情监测报告饱览大美京西!4条秋季精品旅游线路带你玩遍门头沟再提醒!这些防溺水短视频和急救知识一起学生涯代表作!恩比德狂揽591187肆虐爵士?加兰516憾负狼三餐吃太晚,基因都被篡改了!附每餐最佳时刻表京城银杏进入最佳观赏期,迷人秋色就藏在这6个地方3。3卡池,母子一起来了?每日一味抗癌中药臭牡丹,活血消肿解毒,常用于肺癌肝癌深圳大学校长希望再培养出10位马化腾空气里可以种出庄稼吗?农民真的要失业了么?科技真是鬼斧神工儿童跑酷丨超燃超热血的游戏来啦双十一,这三款手机特别不建议购买
火星救援为什么被禁(火星救援评价)乐福詹姆斯永远是观众眼中的家乡英雄,我认为他是GOAT哈罗顺风车车主要求电脑必备软件有哪些呢台美海巡单位在东部外海秘密操演台湾最大吨位嘉义舰参与grab怎么读grab的意思IBM大中华区董事长陈旭东:这一轮“数字化”将面临四大挑战热 古典音乐与“四育”热传聚热点网 GIMSUN月刊第四十一期古典诗词鉴赏之李清照篇《一剪梅》造车只是交个朋友?“蔚小理”三家上半年亏损近96亿热传聚热点 手机跑了

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找江西南阳嘉兴昆明铜陵滨州广东西昌常德梅州兰州阳江运城金华广西萍乡大理重庆诸暨泉州安庆南充武汉辽宁