02 2021 档案
摘要:一:Metaspace介绍 我们都知道jdk8之前有perm这一整块内存来存klass等信息,我们的参数里也必不可少地会配置-XX:PermSize以及-XX:MaxPermSize来控制这块内存的大小,jvm在启动的时候会根据这些配置来分配一块连续的内存块,但是随着动态类加载的情况越来越多,这块内
阅读全文
摘要:1:关于visualVM的使用介绍 参见:https://www.cnblogs.com/krock/p/14419459.html 2:测试 环境:jdk1.8, window 1)Metaspace OOM 测试代码: public static void main(String[]args)
阅读全文
摘要:参考:https://www.cnblogs.com/lizhonghua34/p/7307139.html
阅读全文
摘要:参考原博文:https://blog.csdn.net/weixin_34026276/article/details/85930598 Java VisualVM默认没有安装Visual GC插件,需要手动安装,JDK的安装目录的bin目录下双击jvisualvm.exe,即可打开Java Vis
阅读全文
摘要:1:标准参数 标准参数,顾名思义,标准参数中包括功能以及输出的结果都是很稳定的,基本上不会随着JVM版本的变化而变化。 我们可以通过 -help 命令来检索出所有标准参数。 关于这些命令的详细解释,可以参考官网:https://docs.oracle.com/javase/7/docs/techno
阅读全文
摘要:JVM内存结构 主要参考在CSDN写的一篇内容:https://blog.csdn.net/A7_A8_A9/article/details/106007906 Java内存模型和JVM内存结构的对比主要参考:https://zhuanlan.zhihu.com/p/29881777 补充: JDK
阅读全文
摘要:public static String getLocalIp() { String ip=""; if (System.getProperty("os.name").toLowerCase().indexOf("windows")>-1) { try { ip= InetAddress.getLo
阅读全文
摘要:前言: 所有的垃圾回收算法都要经历标记阶段。如果GC线程在标记的时候暂停所有用户线程(STW),那就没三色标记什么事了。但是这样会有一个问题,用户线程需要等到GC线程标记完才能运行,给用户的感觉就是很卡,用户体验很差。 现在主流的垃圾收集器都支持并发标记。什么是并发标记呢?就是标记的时候不暂停或少暂
阅读全文
摘要:G1及其后出现的垃圾收集器ZGC、Shenandoah,它们都是基于Region的内存布局形式。它们垃圾收集的目标范围不再是整个新生代(Minor GC)、老年代(Majon GV)、整个堆(Full GC),而是一个一个的Region。因为这样的内存布局,所以G1能做到面向局部收集。 每个Regi
阅读全文
摘要:对象是否存活判断算法: 即判断JVM中的所有对象,哪些对象是存活的,哪些对象可回收的算法。 1:引用计数。 最简单的垃圾判断算法。 在对象中添加一个属性用于标记对象被引用的次数,每多一个其他对象引用,计数+1,当引用失效时,计数-1,如果计数=0,表示没有其他对象引用,就可以被回收。 但是这个算法无
阅读全文
摘要:前言: Oop-Klass体系回顾,在JVM第一篇中讲过了这部分内容,今天的内容也涉及,回顾一下。 ooPDesc MarkOopDesc:存放锁的信息,分代年龄等等 InstanceOopDesc:非数组对象 arrayOopDesc:数组对象 typeArrayOopDesc:基本数据类型数组,
阅读全文