专栏电商日志财经减肥爱情
投稿投诉
爱情常识
搭配分娩
减肥两性
孕期塑形
财经教案
论文美文
日志体育
养生学堂
电商科学
头戴业界
专栏星座
用品音乐

检查Java元空间区域的内容

  每日分享最新,最流行的软件开发知识与最新行业趋势,希望大家能够一键三连,多多支持,跪求关注,点赞,留言。了解有关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。ConstInfo;
  2:71806070032224〔C
  3:157355350353696java。util。HashMapNode
  4:43012424732832〔Ljava。lang。Object;
  5:100129024030960javassist。bytecode。Utf8Info
  6:85826820598432java。util。ArrayList
  7:71803717232888java。lang。String
  8:14401114987488java。lang。Class
  9:14308111447152〔Ljava。util。HashMapNode;
  10:1430369154304javassist。bytecode。ClassFile
  11:1430359154240javassist。CtNewClass
  12:2861246892400〔B
  13:1430856868080java。util。HashMap
  14:2860786865872javassist。bytecode。ClassInfo
  15:1430366865728〔〔Ljavassist。bytecode。ConstInfo;
  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。HashtableEntry;
  28:64220544java。util。concurrent。ConcurrentHashMapNode
  29:24413664java。lang。invoke。MemberName
  30:34110912sun。misc。FDBigInteger
  31:2128480java。lang。ref。SoftReference
  32:1408400〔Ljava。lang。ref。SoftReference;
  33:2347488java。lang。invoke。LambdaFormName
  34:1767040java。lang。invoke。MethodType
  35:2566144java。lang。Long
  36:166016java。lang。Thread
  37:1735880〔Ljava。lang。Class;
  38:3665856java。lang。Object
  39:1775664java。lang。invoke。MethodTypeConcurrentWeakInternSetWeakEntry
  40:105280〔Ljava。util。concurrent。ConcurrentHashMapNode;
  41:2564096java。lang。Byte
  42:2564096java。lang。Integer
  43:2564096java。lang。Short
  44:734088java。lang。invoke。MethodTypeForm
  45:823808〔Ljava。lang。invoke。LambdaFormName;
  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工具生成的报告的摘录,其中显示了加载到内存中的类。
  你的记忆里有什么
  注意:上面提到的所有方法都不会给您的应用程序增加明显的开销,但是堆转储方法是一种侵入性选项,它将给您的应用程序增加相当大的开销。捕获堆转储后,您的应用程序将暂停,直到捕获完成。

嫪毐之乱背后的宫斗戏码受李开元和芜史启发,对嫪毐之乱有一个新的推测和猜想这场变乱实际上是秦王嬴政的嫡祖母华阳太后和母亲赵姬及各自代表的政治势力之间的一场权力争夺战。嫪毐等人(包括幕后的太后赵姬,此时相邦大明最强太子当面顶撞朱元璋,朱标凭什么这么受宠?元朝至正十五年,朱标出生了。可以说,他的生活条件应该比他的父亲朱元璋好亿点。在这个时候,朱元璋已经离开起义军领袖郭子兴,白手起家,自立门户,打拼得相当红火。朱标出生这一年,朱元璋二离天堂太远,离美国太近为何美国是墨西哥毒品泛滥的根源美国是世界上最强大的国家,也是世界头号经济强国,人均GDP接近7万美元,还有着相对完善的社会福利制度,与美国只有一墙之隔的墨西哥,则毒品泛滥帮派林立,社会动荡不安。墨西哥流传着这样此次机构改革是改革的拐点改革的改革从外求西方转向内求自身此次国务院机构改革,实际上也是中国改革自身的拐点,甚至也是近代以来中国历史的拐点。以前的改革,在方向和方式上,都是朝向西方的,但此次改革却是朝向中国自身的。在以前的改革思维中,以中英国太空探索负责人称外星人肯定存在据镜报报道,英国太空探索部负责人利比杰克逊说,人类不可能是宇宙中唯一的生命形式。他表示,外星人的存在不是一个是否存在的问题,而更多的是一个我们何时能找到更多答案的问题,以解决这些紧会拐弯的光,带领人类刷新了对宇宙的认知光有重量吗?它受不受引力的作用?这个问题曾引起许多著名物理学家的好奇心,正因为对它不懈地思索,促使爱因斯坦建立著名的广义相对论,而对这个问题的实验观察,又使广义相对论的正确性得以验零跑抢走新能源车的定价权做用户的代工厂,用更少的钱,买更好的产品。打掉虚高的品牌溢价,给用户最具诚意的产品。3月1日的零跑新品发布会上,零跑汽车董事长创始人朱江明不断重复着品价比的发展思路。在他看来,现阶数字化时代,你应该知道的BI我曾经看到有人在讨论过商业智能BI的部署对于企业是否有实际意义,现在市场的数据已经证明商业智能BI在商业世界中,在企业的实践中证明了自己的价值,得到了广泛的认可。一什么是BI有一点万物互联6G概念领涨数字经济,重点概念股梳理6G是实现万物互联和数字经济发展的核心技术东风吹,战鼓擂!数字经济的东风愈刮愈烈,今天扩散到了通讯6G,6G是实现万物智联的关键底层技术,是数字经济发展的核心技术。在流浪地球2中,辛巴炮轰情感主播造假背后,平台去头部化切割利益蛋糕快手知名主播辛巴又在直播间开骂了。3月8日,辛巴在快手平台直播过程中,指责快手纵容情感主播制造虚假人气和虚假数据坑骗老人,剧本编排骗老人。直播间造假十万加,快手你们管不管?同时质问诸葛亮自比管仲,历史中二位圣贤才能可否高下立判?世人皆言诸葛孔明乃神人也!而诸葛亮却自比管仲乐毅。这到底是自谦,还是装,抑或是二者皆有。大家好,我是潜心,把历史还给百姓,用心传递智能量。今天好兄弟们一起探讨一下诸葛孔明与管仲二人
ESPN曼联告诉萨比策好好踢踢得好夏天给他一份长期合同据ESPN报道,曼联告诉萨比策,如果他能之后的比赛中拿出优异表现,俱乐部会在夏天给他开出一份长期合同。萨比策目前被拜仁租借在曼联,租借合同中没有买断条款,这意味着租借到期后他将回到卖11000元的天价草鞋见过吗?不掺假的那种!网友夏天招蚊子吗?近日知名品牌LOEWE发布2023春夏系列最为引人注目的当属模特们身上长草的鞋子和衣服了据悉,模特秀场上的款式是真实的草,而售卖的款式由全手工刺绣拉菲草呈现草地效果,帆布鞋面和蜂蜜厦门海边沙滩海怪频现!原来是它们近期,一些市民游客注意到,厦门海边沙滩上,出现了一些通体青褐色,有如海怪的小动物它们呈扁平圆盘状,坚硬的外壳上有圆溜溜的小眼睛,同时,有一条细细长长的尾巴。如果将小动物翻过身来,还卖11000元的天价草鞋见过吗?网友夏天招蚊子吗?近日知名品牌LOEWE发布2023春夏系列最为引人注目的当属模特们身上长草的鞋子和衣服了据悉,模特秀场上的款式是真实的草,而售卖的款式由全手工刺绣拉菲草呈现草地效果,帆布鞋面和蜂蜜省料省工钱?每家每户都这样?去年10月份,郭先生给女儿房间定了一套家具,在师傅上门安装的过程中,他觉得有些不对劲。顾客质疑省材料每家每户都一样?记者在郭先生家里看到,他女儿的房间里有一张床一个柜子和一张桌子。福鼎南镇村百年传承灯火新古韵渔村闹元宵正月十五闹花灯,是福鼎市沙埕镇南镇村的传统习俗,也是这个海边渔村年味最浓最热闹的时候。渔民们和返乡游子自筹自导自演,以此祈求新的一年风调雨顺国泰民安。从农历正月十三开始,板凳龙马灯曝贾秀全陈永亮带病提拔内幕!足协纪检书记是保护伞,还掩盖假球旅居美国的前体坛周报记者冉雄飞,今天再次爆料,这次他将矛头对准了足协纪检书记原国家体育总局监察局巡视员闫占河,称他是带病提拔陈永亮和贾秀全的足协高官,还声称曾有假球案被闫占河用职权中央一号文件定调!农民致富的机会来了,县城将迎来重大发展机遇如今国际局势风云变幻,在战争疫情和气候等问题的叠加影响下,国际粮食价格高位震荡,全球饥饿人口不断增长,从而导致全球粮食危机持续加剧,正所谓强国必先强农,农强方能国强。所以近日,20咖啡连锁在县城春节前后,伴随着疫情放开后的首个返乡潮,在一二线城市过着日咖夜酒的人们将喝咖啡的习惯带回了县城,瑞幸在某县城日售1000杯星巴克某县城门店日收入近2万等消息随之而来。近日,瑞幸宣布超级碗再度封神!NFL终于有了自己的库里文傅皓南编李禄源2022赛季NFL比赛在今早正式画上句号。堪萨斯城酋长以3835战胜了费城老鹰,夺得第57届超级碗。五年,三进超级碗,两座冠军,连续打进五届美联决赛在布雷迪离开爱国请查收!这封神秘的邀请函里藏着未来教育的密码来源中国教育新闻网2月13日至14日教育部中国联合国教科文组织全国委员会共同举办的世界数字教育大会将在北京召开大会以数字变革与教育未来为主题将围绕数字化转型数字学习资源开发与应用师
友情链接:快好找快生活快百科快传网中准网文好找聚热点快软网