jvm专题
享知
Java源码爱好者、熟悉分布式技术、中间件等技术.
格言: 故不积跬步,无已至千里;不积小流,无以成江海;
展开
-
第一章 认识jvm内存分配
1、jvm是如何与java程序之间的通信。2、class文件是如何java1、介绍类的加载与回收 我们编程的java程序最终编译.class,然后通过类加载器,加载道内存。当类不没有没引用到就会被垃圾回收器器回收. 2、数据和指令 1 、Java栈是存储的基本数据类型和对象的引用地址,那么对象的地址会存储到寄存器。 2、内存空间与执行引擎之间是通过数据与指令进行交互。然后执行引擎...原创 2019-09-22 16:46:05 · 499 阅读 · 0 评论 -
第二章 内存模型JMM
一、内存模型1、线程分配内存空间:每一个线程都有自己的内存和主内存独立;工作空间存储的主内存中变量的副本。2、线程与主内存之间数据的传递过程主内存拷贝工作内存存储:1、当主内存执行的读read操作;2、工作内存执行load操作反之:1、工作内存执行的存储store操作2、主内存执行的相应的写write操作出现线程之前数据不一致的问题如何解决: 出现了可见性一个线程修改了一个变...原创 2019-09-22 22:18:27 · 120 阅读 · 0 评论 -
第三章 JVM垃圾回收机制与收集器
垃圾机制引用计数法定义:一个对象应用了就对他加1,释放就减1.过程通过可达性分析。分析存在的问题1、性能问题: 大量的计算2、导致对象无法被回收(循环引用的问题)。标记清除算法定义标记阶段和清除阶段,通过可达性分析过程可达性分析分析存在的问题会产生碎片空间。标记压缩定义先标志存活对象,然后在压缩。过程可达性分析 主要应用在老年代分析存在的问题同上。复制...原创 2019-09-22 22:42:32 · 113 阅读 · 0 评论 -
第五章 性能监控工具
性能监控⼯具Linux 监控⼯具uptimetopvmstat原创 2019-09-26 17:21:53 · 162 阅读 · 0 评论 -
第六章 jvm实战分析
JVM实战分析实例一 程序卡死、没有输出运行一段程序,期望输出xx,结果在程序运行后,程序卡死,没有预期的输出。分析步骤:首先用jps拿到java应用的pidjstack查看线程相关的信息发现main方法在等待socket接收,而这个接收的过程存在卡死实例二 CPU飙高Java 程序 HoldCPUMain 运行后,发现占用 CPU 很高,希望能找到原因分析步骤首先用j...原创 2019-09-27 15:59:07 · 104 阅读 · 0 评论 -
第七章 堆、永久区、线程栈、直接内存实战分析
堆、永久区、线程栈、直接内存实战分析jvm 中的内存区间:1、堆2、永久区3、线程栈4、直接内存。总结:这四块空间只要有任意一块空间得不到满足,都可能出现 OOM。堆溢出/** *OOM -Xmx16m -Xms16m * Exception :Exception * in thread "main" java.lang.OutOfMemoryError: Java h...原创 2019-09-25 23:26:17 · 191 阅读 · 0 评论 -
第四章 类加载
类装载过程流程加载链接验证准备解析初始化加载装载类的第一阶段是取得二进制流装换为方法区的数据结构在java堆中产生class对象。准备链接-验证目的: 保证Class的格式正确文件格式的验证a、是否以0XCAFEBABE开头b、版本号是合理元数据验证a、是否有父类b、继承了final类(final类不能被继承、如果继承了就有问题)c、非抽象实现了所有抽象...原创 2019-09-26 17:20:36 · 81 阅读 · 0 评论 -
第八章 支配树、锁
支配树,深、浅堆,锁支配树(Dominator Tree)支配树体现了对象实例间的支配关系他有如下几个特征指向对象B的路径都经过对象A,则认为对象A支配对象B。如果对象A是离对象B最近的一个支配对象,认为对象A为对象B的直接支配者。浅堆&深堆锁对象头MarkMark Word,对象头的标记,32 位描述对象的 hash、搀信息、垃圾回收标记、年龄指向搀记录的指针...原创 2019-09-27 16:21:55 · 125 阅读 · 0 评论