用jcmd命令分析虚拟机metaspace元空间

用jcmd命令分析虚拟机metaspace元空间

爪哇岛 4年前 (2020-09-16) 浏览: 1159 评论: 0

使用JDK 11时jcmd添加了一个新的诊断命令:jcmd:VM.metaspace 虚拟机元空间 此命令对于分析元空间消耗非常有用。因此,让我们深入研究并使用它来重新访问我们的小WildFly服务器,它可以从以前的文章中获得。我们描述了命令输出和选项,以及如何使用它来发现典型的浪费点。 虚拟机元空间,与JDK-8201572一起推出-由SAP和Red Hat提供-是jcmd瑞士军刀的新增加。 与

Java在线诊断利器之Arthas

Java在线诊断利器之Arthas

Java系列 4年前 (2020-02-13) 浏览: 4778 评论: 0

一. 简介 Arthas是阿里在2019年9月份开源的一款java在线诊断工具,能够分析、诊断、定位java应用问题,例如:jvm信息、线程信息、搜索类中的方法、 跟踪代码执行、观测方法的入参和返回参数等等。 Arthas最大的特点是能在不修改代码和不需要重新发布的情况下,对业务问题进行诊断,包括查看方法调用的出参入参、异常、监测方法执行耗时、类加载信息等,大大提升线上问题排查效率。 二. 适用场

JVM Metaspace内存溢出排查与总结

JVM Metaspace内存溢出排查与总结

Java系列 4年前 (2020-02-13) 浏览: 7506 评论: 0

一. 现象 前段时间公司线上环境的一个Java应用因为OOM的异常报警,导致整个服务不可用被拉出集群,本地模拟重现的现象如下: 当时的解决方案是增加metaspace的容量:-XX:MaxMetaspaceSize=500m,从原来默认的256m改为500m,虽然没有再出现oom,但这个只是临时解决方案,通过公司的监控系统观察metaspace的使用情况还是在上升,而且后面随着业务访问量越来越大还

JVM元空间metaspace的内存结构

JVM元空间metaspace的内存结构

爪哇岛 4年前 (2020-09-13) 浏览: 1569 评论: 0

我们深入研究元空间的架构。我们描述了各个层和组件,以及它们是如何协同工作的。 这对那些想要破解hotspot和Metaspace或者至少真正理解内存的去向以及为什么我们不能仅仅使用malloc的人来说是很有趣的。 与大多数其他非平凡的分配器一样,元空间是在层中实现的。 在底部,内存是在操作系统的大区域中分配的。在中间,我们将这些区域分割成不太大的块,然后交给类装入器。 在顶部,类装入器将这些块分割

JVMjava虚拟机中影响垃圾收集GC的有哪些因素?

JVMjava虚拟机中影响垃圾收集GC的有哪些因素?

爪哇岛 4年前 (2020-09-12) 浏览: 352 评论: 0

弱引用、软引用、虚引用 一些应用程序通过使用终结和弱、软或虚引用与垃圾回收进行交互。 这些特性可以在Java编程语言级别创建性能组件。 例如,依赖终结来关闭文件描述符,这使得外部资源(描述符)依赖于垃圾收集的及时性。依赖垃圾回收来管理内存以外的资源几乎总是一个坏主意。 显式垃圾回收 应用程序可以与垃圾回收交互的另一种方式是通过调用垃圾回收(). 这可能会在不必要时强制执行主要收集(例如,当次要收集

如何测量metaspace元空间的大小

如何测量metaspace元空间的大小

爪哇岛 4年前 (2020-09-11) 浏览: 1123 评论: 0

可以通过运行jstat-gc(PID)命令在运行时查看元空间内存的使用情况 另外一个问题: java应用程序的本机内存(Metaspace)是从堆内存获得空间,还是有一组完全不同的内存专用于它? 答: Java堆空间 Java堆空间由Java运行时用来为对象和JRE类分配内存。每当我们创建任何对象时,它总是在堆空间中创建的。垃圾回收在堆内存上运行,以释放没有任何引用的对象所使用的内存。在堆空间中创

Java元空间metaspace到底是什么?

Java元空间metaspace到底是什么?

爪哇岛 4年前 (2020-09-10) 浏览: 3861 评论: 0

Oracle JDK或OpenJDK使用元空间存储其类元数据。它可以为java vm进程的非Java堆内存占用贡献很大一部分。 我们解释它是什么,为什么我们需要它。一个简短,快速,希望容易阅读,而不是深入到虚拟机内部。每个人都能消化。 Note: JDK version dependencies: Metaspace implementation changed quite a bit since

Java8如何在运行时找出元空间metaspace的大小

Java8如何在运行时找出元空间metaspace的大小

爪哇岛 4年前 (2020-09-09) 浏览: 1994 评论: 0

Java8使用能够动态扩展的元空间。GC将在metaspace满时运行。 这是否意味着GC永远不会在metaspace上运行呢? 我的Java8应用程序占用了大量内存。我想知道我的元空间在运行时的大小。我该怎么做? 我正在考虑设置MaxMetaspaceSize。我应该把它设置成什么?有什么建议吗? jstat -gc PID 执行jvm指令 jstat -gc PID (用要监视的JVM的PID

metaspace元空间gc垃圾回收问题

metaspace元空间gc垃圾回收问题

爪哇岛 4年前 (2020-09-08) 浏览: 7460 评论: 0

metaspace gc 案例 这是我使用jvm的g1垃圾回收在GC时遇到的问题: 2400.241: [GC concurrent-root-region-scan-start] 2400.241: [Full GC (Metadata GC Threshold) 2400.252: [GC concurrent-root-region-scan-end, 0.0101404 secs] 240

metaspace元空间的前世今生

metaspace元空间的前世今生

爪哇岛 4年前 (2020-09-07) 浏览: 1244 评论: 0

我们都知道在Java8中用元空间取代了PermGen。 但有几个问题: MetaSpace默认是GC收集的吗? 即使PermGen是通过添加-XX:+CMSClassUnloadingEnabled这样的参数进行GC收集的,那么有什么比PermGen更好的MetaSpace呢? MetaSpace基于本机内存,所以它将java对象保存在磁盘上,而不是VM上? 甚至元空间也会耗尽内存?如果是这样的话

Spock小结

Spock小结

Spock系列 4年前 (2020-08-20) 浏览: 1759 评论: 0

前面的几篇文章介绍了Spock的各种语法,和power mock的结合,以及注意事项,这篇做个总结,让大家对Spock有个全面客观的了解 Spock优点 遵循BDD模式、功能强大、语义规范、可读性好、易于维护、富有表现力 更灵活的控制测试行为,专注代码的逻辑测试而不是书写语法上 用自然语言描述测试步骤(非技术人员也能看懂测试用例) 兼容mock框架,可以和项目中的java单测代码共存,降低迁移成本

如何使用jmap命令从core dump提取堆转储?

如何使用jmap命令从core dump提取堆转储?

jvm 1个月前 (02-26) 浏览: 40 评论: 0

什么是core dump核心转储? 当程序异常终止时,应将程序在终止点的状态保存在某个位置以供进一步分析。此状态以核心转储文件的形式记录。 核心转储core dump文件包含异常终止发生的位置、进程堆栈、符号表等详细信息。 为什么需要core dump? 当生成堆转储jmap 块时,对于大堆,这可能需要很长时间。在这些情况下,获取核心然后运行 ​​jmap 从core dump提取堆转储通常要快得

Spock高级用法 – 动态mock

Spock高级用法 – 动态mock

Spock系列 4年前 (2020-08-18) 浏览: 4220 评论: 0

这是Spock系列的第八篇文章,上一篇介绍了Spock如何使用power mock测试静态方法,这篇讲解Spock自带的mock功能如何和power mock组合使用,发挥更强大的作用 动态mock静态方法 (spock where + power mock) 在上一篇的例子中使用power mock让静态方法返回一个指定的值,那能不能每次返回不同的值呢? 我们先看下什么场景需要这样做: /**

Java开发规范之性能篇

Java开发规范之性能篇

Java系列 4年前 (2020-02-17) 浏览: 715 评论: 0

JAVA开发中,大部分的性能问题原因并不在于JAVA语言本身,而是我们用这些语言写的程序,所以养成良好的编码习惯非常重要。 下面给大家分享一些日常开发中比较常见的典型案例: 一. 类中的内部方法声明为private 很多同学觉得这个无所谓,写代码时喜欢一个类里的所有方法都是public的(原因大家都懂),美其名曰:便于后期扩展。。 对于不需要外部访问的方法改为私有的,不仅仅是因为面向对象的思想,符

Spock代码讲解-void方法测试

Spock代码讲解-void方法测试

Spock系列 4年前 (2020-08-11) 浏览: 2008 评论: 0

这是Spock系列的第六篇文章,本篇讲解如何针对void方法,即无返回结果的方法测试 void方法 void方法的测试不能像前面几篇介绍的那样在then标签里验证返回结果,因为void方法没有返回值 一般来说无返回值的方法,内部逻辑会修改入参的属性值,比如参数是个对象,那代码里可能会修改它的属性值,虽然没有返回,但还是可以通过校验入参的属性来测试void方法 还有一种更有效的测试方式,就是验证方法

Spock代码讲解-异常测试

Spock代码讲解-异常测试

Spock系列 4年前 (2020-08-11) 浏览: 2567 评论: 0

这是Spock系列的第五篇文章,这一篇主要讲使用Spock如何测试代码中抛异常的场景 背景 有些方法需要抛出异常来中断或控制流程,比如参数校验的逻辑: 不能为null,不符合指定的类型,list不能为空等验证,如果校验不通过则抛出checked异常,这个异常一般都是我们封装的业务异常信息,比如下面的业务代码: /** * 校验请求参数user是否合法 * @param user * @throws

JVM学习笔记之codeCache

JVM学习笔记之codeCache

Java系列 4年前 (2020-02-18) 浏览: 1011 评论: 0

上海这边的互联网公司大部分是2-7号在家远程办公,有些可能更晚,这期间工作上的事情不多,就把《深入理解java虚拟机》这本书又撸了一遍,顺便写下心得体会,和大家分享,温故知新。 一. codeCache简介 从字面意思理解就是代码缓存区,它缓存的是JIT(Just in Time)编译器编译的代码,简言之codeCache是存放JIT生成的机器码(native code)。当然JNI(Java本地

JVM学习笔记之client server端区别

JVM学习笔记之client server端区别

Java系列 4年前 (2020-03-01) 浏览: 634 评论: 0

今天继续远程办公,好想出去打篮球,但是怂,外面场地也不开放,只能窝在家憋大招。 互联网公司流行敏捷开发,快速迭代,所以憋出的大招不一定适用(扯远了)。 言归正传这次和大家分享一些虚拟机方面的知识,主要是关于jvm的client和server端区别,支持的工作模式有哪几种以及他们之间的关系。 java -version 命令大家都用过,大部分就是看下jdk版本或检查下环境变量的设置,但最后一行的信息

Spock如何解决传统单元测试开发中的痛点

Spock如何解决传统单元测试开发中的痛点

Spock系列 4年前 (2020-08-01) 浏览: 4073 评论: 0

这是Spock系列的第二篇文章,上一篇介绍了Spock的特点以及它和JUnit,JMock的区别,这篇主要讲下我们平时写单元测试过程中遇到的几种常见问题,分别使用JUnit和Spock如何解决,通过对比的方式给大家一个整体认识。 一. 单元测试代码开发的成本和效率 复杂场景的业务代码,在分支(if/else)很多的情况下,编写单测代码的成本会相应增加,正常的业务代码或许只有几十行,但为了测试这个功

线程池ForkJoinPool简介

线程池ForkJoinPool简介

Java系列 4年前 (2020-03-01) 浏览: 2408 评论: 0

ForkJoinPool线程池最大的特点就是分叉(fork)合并(join),将一个大任务拆分成多个小任务,并行执行,再结合工作窃取模式(worksteal)提高整体的执行效率,充分利用CPU资源。 一. 应用场景 ForkJoinPool使用分治算法,用相对少的线程处理大量的任务,将一个大任务一拆为二,以此类推,每个子任务再拆分一半,直到达到最细颗粒度为止,即设置的阈值停止拆分,然后从最底层的任

登录

忘记密码 ?

切换登录

注册