随笔分类 - JVM
摘要:1.什么是G1 G1是一种服务端应用使用的垃圾收集器,目标是用在多核、大内存的机器上,它在大多数情况下可以实现指定的GC暂停时间,同时还能保持较高的吞吐量 参考链接:https://www.oracle.com/technical-resources/articles/java/g1gc.html
阅读全文
摘要:1.PS GC日志详解 total = eden + 1个survivor eden space 5632K, 94% used [0x00000000ff980000,0x00000000ffeb3e28,0x00000000fff00000) 后面的内存地址指的是,起始地址,使用空间结束地址,整
阅读全文
摘要:1.了解JVM常用命令行参数 HotSpot参数分类 标准: - 开头,所有的HotSpot都支持 非标准:-X 开头,特定版本HotSpot支持特定命令 不稳定:-XX 开头,下个版本可能取消 java -XX:+PrintFlagsFinal | grep xxx 找到对应的参数 java -X
阅读全文
摘要:1.什么是三色标记 黑色:自身和成员变量均已标记完成 灰色:自身被标记完成,成员变量未被标记 白色:未被标记的对象(垃圾) 2.漏标 什么是漏标:将原来存活的对象,但是由于没有遍历到当作垃圾回收了 产生漏标的原因:1、黑色对象指向了白色对象;2、灰色对象取消了对白色对象的引用。就会产生白色对象被漏标
阅读全文
摘要:1.GC常用参数 -Xmn -Xms -Xmx -Xss 年轻代 最小堆 最大堆 栈空间 -XX:+UseTLAB 使用TLAB,默认打开 -XX:+PrintTLAB 打印TLAB的使用情况 -XX:TLABSize 设置TLAB大小 -XX:+DisableExplictGC System.gc
阅读全文
摘要:1.什么是CMS CMS主要设计目标:低停顿时间 CMS全称ConcurrentMarkSweep,作用于老年代,并发标记清除,并发是指垃圾回收和应用程序同时运行,这样的目的是为了降低STW的时间(200ms) CMS垃圾回收器基于标记-清除算法实现,那么使用该算法的最大缺点也显而易见——大量的内存
阅读全文
摘要:1.什么是垃圾 没有任何引用指向的一个对象或者多个对象(循环引用) 2.如何定位垃圾 引用计数(ReferenceCount) 就是对每个对象都追踪指向它们的引用数,如果引用数为0,就说明这个对象是内存垃圾了。但是这个方法存在缺陷,如果多个对象之间存在循环引用,但是这些对象没有被外部引用,这些对象实
阅读全文
摘要:1.JVM运行时数据区(JVM Runtime Data Area) 1.1 Program Counter (程序计数器) Each Java Virtual Machine thread has its own pc (program counter) register 每个java虚拟机线程都
阅读全文
摘要:1. 什么是JMM 内存模型可以理解为在特定的操作协议下,对特定的内存或者高速缓存进行读写访问的过程抽象描述,不同架构下的物理机拥有不一样的内存模型,Java虚拟机是一个实现了跨平台的虚拟系统,因此它也有自己的内存模型,即Java内存模型(Java Memory Model, JMM)。因此它不是对
阅读全文
摘要:1.类加载流程以及双亲委派机制 1.1 loading 1.1.1 双亲委派机制(设计原因是出于安全考虑) 类加载器范围: Bootstrap加载路径:sun.boot.class.path ExtClassLoader加载路径:java.ext.dirs AppClassLoader加载路径:ja
阅读全文
摘要:1.Class文件结构 2.class文件详解 public class T {} 对应的二进制class文件 在idea jclasslib插件下解析出来的二进制文件 对应的二进制文件解释 常量池解释: 比如:cafe babe 0000 0034 0010 0a00 0300 0d 其中0a转换
阅读全文
摘要:1. java从编码到执行 2. jvm跟java无关,只跟class文件相关 3. javac的过程 4. JDK JRE JVM 5. jvm是一种规范 相关资料 https://docs.oracle.com/en/java/javase/13/ https://docs.oracle.com
阅读全文