
深入理解Java虚拟机笔记
nic.lu
这个作者很懒,什么都没留下…
展开
-
第二章Java内存区域与内存溢出异常
JVM内存模型及特征:堆: 1.JVM管理内存中最大的一块,被所有线程共享 2.唯一目的是存放对象实例和数组 3.垃圾搜集器管理的主要区域 4.可扩展,通过-Xmx和-Xms来控制 5.如果在堆中没有内存完成实例分配,并且堆也无法再扩展时,将会抛出OutOfMemoryError异常虚拟机栈: 1.线程私有 2.局部变量表所需的内存空间在编译期间完成分配 3.该区域规定了两...原创 2019-01-07 14:50:19 · 257 阅读 · 1 评论 -
第三章垃圾收集器与内存分配策略
对象存活判定算法:2种1.引用计数算法:给对象添加一个引用计数器,有地方引用它时,计数器就加1,引用失效时,计数器减1.任何时刻,计数器为0的对象,是不可能再被使用的 优点:实现简单,判断效率也很高 缺点:很难解决对象之间相互循环引用的问题,对象A,B相互引用,引用计数不为02.可达性分析算法: 通过一系列称为"GC Roots"的对象作为起点,从这些节点开始向下搜索,搜索所走过的路径称...原创 2019-01-09 14:28:15 · 179 阅读 · 0 评论 -
第四章虚拟机性能监控与故障处理工具
数据包括:运行日志,异常堆栈,GC日志,线程快照(threaddump/javacore文件),堆转储快照(heapdump/hprof文件)等.-Dcom.sun.management.jmxremote 开启JMX管理功能(JDK1.6以上默认开启)jpsJVM Process Status Tool,显示指定系统内所有的HotSpot虚拟机进程,它是使用频率最高的JDK命令行工具...原创 2019-01-22 11:37:12 · 256 阅读 · 0 评论 -
第十三章 线程安全与锁优化
Java语言中各种操作共享的数据分为以下5类:不可变,绝对线程安全,相对线程安全,线程兼容和线程对立线程安全的实现方法:1.互斥同步:同步是指在多个线程并发访问共享数据时,保证共享数据在同一时刻只被一个(或者是一些,使用信号量的时候)线程使用.而互斥是实现同步的一种手段,临界区,互斥量和信号量都是主要的互斥实现方式.因此,在这4个字里面,互斥是因,同步是果;互斥是方法,同步是目的. 最基...原创 2019-02-18 10:24:07 · 154 阅读 · 0 评论 -
第七章 虚拟机类加载机制
类的生命周期:类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括:加载,验证,准备,解析,初始化,使用和卸载7个阶段.其中验证,准备和解析3个部分统称为连接.类加载的过程:加载,验证,准备,解析和初始化1.加载阶段,虚拟机需要完成3件事情:a.通过一个类的全限定名来获取定义此类的二进制字节流b.将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构c.在内存中...原创 2019-02-18 10:26:38 · 221 阅读 · 0 评论 -
第十二章 Java内存模型与线程
DCL单例(双锁检测)public class Singleton{private volatile static Singleton instance;public Singleton getInstance(){if(instancenull){synchronized(Singleton.class){if(instancenull){instance=new Singlet...原创 2019-02-18 10:33:23 · 158 阅读 · 0 评论