最新文章

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

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

爪哇岛 8个月前 (09-16) 浏览: 107 评论: 0

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

调整元空间metaspace大小

调整元空间metaspace大小

爪哇岛 8个月前 (09-15) 浏览: 675 评论: 0

MaxMetaspaceSize和CompressedClassSpaceSize是控制元空间大小的旋钮 现在,这些参数可能有点混乱。首先,它们有两种,它们有着微妙的不同含义,它们相互影响。 所以让我们仔细看看。我们将详细解释这些参数是如何工作的。然后,我们将分析单个类平均需要多少元空间。最后,我们将尝试导出一些粗略的经验法则,并检查默认行为是什么。 推荐阅读:https://javakk.com

什么是metaspace的压缩类空间?

什么是metaspace的压缩类空间?

爪哇岛 8个月前 (09-14) 浏览: 135 评论: 0

在本系列的前一篇文章中,元空间体系结构故意省略了压缩的类空间。这一点使情况更加复杂。 在64位平台上,hotspot使用称为压缩对象指针(“CompressedOops”)和压缩类指针的优化技术。两者都是同一事物的变体。 压缩指针是一种引用数据(Java堆中的对象或元空间中的类元数据)的方法,即使在64位平台上也使用32位引用。 这有许多优点,例如指针大小更小,从而减少内存占用和更好地利用缓存,并

JVM元空间metaspace的内存结构

JVM元空间metaspace的内存结构

爪哇岛 8个月前 (09-13) 浏览: 301 评论: 0

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

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

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

爪哇岛 8个月前 (09-12) 浏览: 50 评论: 0

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

如何测量metaspace元空间的大小

如何测量metaspace元空间的大小

爪哇岛 8个月前 (09-11) 浏览: 136 评论: 0

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

Java元空间metaspace到底是什么?

Java元空间metaspace到底是什么?

爪哇岛 8个月前 (09-10) 浏览: 373 评论: 0

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

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

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

爪哇岛 8个月前 (09-09) 浏览: 309 评论: 0

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

metaspace元空间gc垃圾回收问题

metaspace元空间gc垃圾回收问题

爪哇岛 8个月前 (09-08) 浏览: 2077 评论: 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元空间的前世今生

爪哇岛 8个月前 (09-07) 浏览: 167 评论: 0

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

Spock小结

Spock小结

Spock系列 9个月前 (08-20) 浏览: 71 评论: 0

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

Spock注意事项

Spock注意事项

Spock系列 9个月前 (08-20) 浏览: 145 评论: 0

Spock虽然好用,但要应用到实际项目中还是需要注意几个问题,下面讲下我们公司在使用过程中遇到的一些问题和解决方案 版本依赖 要使用Spock首先需要引入相关依赖,目前使用下来和我们项目兼容的Spock版本是1.3-groovy-2.5,以maven为例(gradle可以参考官网),完整的pom依赖如下: <spock.version>1.3-groovy-2.5</spock.

Spock代码讲解 – 基类封装

Spock代码讲解 – 基类封装

Spock系列 9个月前 (08-19) 浏览: 107 评论: 0

这是Spock系列的第九篇文章,这一篇介绍在实际使用Spock的过程中如何把一些常用的测试方法抽出来,封装成基类使用 BaseSpock 在前面几篇文章讲解Spock结合power mock实现静态方法mock功能时,示例代码里经常会用到LogUtils等工具类的静态方法去记录日志,那我们就可以把LogUtils类的mock代码抽到一个公共类中,然后我们的测试类去继承我们自己实现的公共类 比如我们

Spock高级用法 – 动态mock

Spock高级用法 – 动态mock

Spock系列 9个月前 (08-18) 浏览: 488 评论: 0

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

Spock代码讲解 – 静态方法测试

Spock代码讲解 – 静态方法测试

Spock系列 9个月前 (08-18) 浏览: 193 评论: 0

这是Spock系列的第七篇文章,本篇主要讲解Spock如何扩展第三方power mock对静态方法进行测试 实现原理 前面的文章讲到Spock的单测代码是继承自Specification基类,而Specification又是基于Junit的注解@RunWith()实现的,代码如下: @RunWith(Sputnik.class) @SuppressWarnings("UnusedDeclarati

登录

忘记密码 ?

切换登录

注册