深入理解jvm部分章节总结
文章平均质量分 95
黑木爷
这个作者很懒,什么都没留下…
展开
-
第2章 Java内存区域与内存溢出异常
运行时数据区域(虚拟机内存模型) 线程共享区域: 堆和方法区 线程私有区域: 程序计数器,虚拟机栈,本地方法栈 生命周期: 线程共享区域生命周期跟虚拟机一样,伴随虚拟机的启动而存在; 线程私有区域生命周期跟线程一样,伴随线程的启动和结束而建立和销毁。 1. 程序计数器 每个线程都有一个程序计数器,用来记录当前线程执行的字节码的行原创 2017-04-28 10:21:44 · 232 阅读 · 0 评论 -
第3章 垃圾收集器与内存分配策略
一、关于对象死亡 1. 引用计数算法 在对象中添加一个引用计数器,当对象被引用时计数器加1;当引用失效时计数器减1;任何时刻计数器都为0的对象就是不可被使用的 但Java语言没有使用引用计数法来管理内存,其中最主要的原因是它很难解决对象之间的相互循环引用的问题 2. 根搜索算法(被Java语言使用) 从GC Roots对象开始向下搜索,如果能到达对象,说明该对象时存活的 能成为原创 2017-04-28 10:23:46 · 211 阅读 · 0 评论 -
第7章 虚拟机类加载机制
类加载器之间的父子关系 一、类加载器的启动过程 JVM启动时,首先启动启动类加载器(Bootstrap ClassLoader),然后启动类加载器加载扩展类加载器(ExtClassLoader)和程序类加载器(AppClassLoader); 启动类加载器用于加载Java核心API,包括扩展类加载器和程序类加载器;扩展类加载器加载扩展API,即/lib/ext中的类;程序类加原创 2017-04-28 10:27:42 · 225 阅读 · 0 评论 -
第8章 虚拟机字节码执行引擎
一、方法调用 方法调用的唯一任务就是确定被调用方法的版本,不涉及内部的运行 方法调用分为两种:解析和分派 (1)对于单一形式的方法,在编译期就确定,这类方法的调用称为解析 (2)对于多态方法(重载和重写),调用时需要分派 1. 解析 2. 分派 分为静态分派和动态分派 静态分派的典型应用是重载 动态分派的典型应用是重写(覆写) (1) 静态分派(静态原创 2017-04-28 10:28:42 · 205 阅读 · 0 评论 -
第12章 Java内存模型与线程
Java内存模型与线程模型 内存模型: 1. 主内存与工作内存 2. 内存间的交互 3. volatile变量 4. 原子性、可见性、顺序性 5. 先行发生原则 线程模型(三种): 1. 内核线程:一对一 2. 用户线程:一对多 3. 混合模型:多对多 一、Java内存模型 1. 主内存与工作内存 java内存模型主要指跟变量相关的内存部分原创 2017-04-28 10:29:37 · 238 阅读 · 0 评论 -
第13章 线程安全与锁优化
一、线程安全 1. 线程安全级别有5种: 不可变,绝对线程安全,相对线程安全,线程兼容,线程对立 (1)不可变 保证对象状态不可变是最简单最纯粹的安全 (2)绝对线程安全 在线程之间不需要使用任何额外的手段就可以实现线程安全,绝对线程安全很难达到,一般都是相对线程安全 (3)相对线程安全 在一个线程内部或一个对象内部是线程安全的,但是多线程之原创 2017-04-28 10:31:22 · 244 阅读 · 0 评论