jvm
irak
这个作者很懒,什么都没留下…
展开
-
深入理解Java虚拟机,学习笔记(一)java内存区域
第二章引言(吐槽)Java虚拟机运行时数据区程序计数器Java虚拟机栈本地方法栈Java堆方法区(永久代)运行时常量池直接内存JVM中的对象对象的创建对象的内存布局对象的访问定位引言(吐槽)深入理解Java虚拟机第二版,总的来说是看过了几遍,但是印象总是不是太深,就像临时抱佛脚一样。大概读计算机系的各位,可能已经忘记了高中时候大部分的生物知识了吧,就比如我。所以借此机会我想好好的对Java虚拟...原创 2018-12-28 20:15:24 · 170 阅读 · 0 评论 -
深入理解Java虚拟机,学习笔记(二)垃圾收集策略
第二章-垃圾收集策略概述如何判断对象是否可以回收引用计数法可达性分析算法GC Roots引用finalize()回收方法区垃圾收集算法标记-清除 算法复制算法标记-整理算法分代收集算法内存分配与回收策略动态对象年龄判定概述JVM中使用到的内存区域有:程序计数器、虚拟机栈、本地方法栈、堆栈里面的一个栈帧(方法)的内存可能在编译的时候就确定了,所以出栈后内存就被回收了。所以对内存回收还是主要注...原创 2018-12-29 15:10:53 · 152 阅读 · 0 评论 -
缓存一致性
缓存一致性硬件单核多核缓存一致性协议(MESI)MESI 状态转换硬件硬件之间的处理速度不相等,尤其是处理器和内存之间。一般都是内存跟不上处理器的处理速度。所有在他们之间引入了缓存(cache)。缓存有2大特点:1.时间局部性(被使用过的内存地址很有可能被再次使用到)2.空间局部性(被使用的地址周围部分也有可能被使用到,所以将内存中某块地址引入缓存里的时候通常会将周围的也引入缓存中)...原创 2019-01-10 18:39:42 · 1651 阅读 · 0 评论 -
深入理解Java虚拟机,学习笔记(四)虚拟机类加载机制
类加载概述类加载的时机类加载过程加载数组验证准备解析初始化概述类加载,而不是对象被实例化。对象的实例化这块,有另外的说法,之后参考别人的博客再整理出必要的。JVM对类的加载并不是在JVM一启动就全部加载好的,可以这么理解,jvm是按需加载:需要什么类就加载什么类,存在的就继续使用,不存在的去加载。定义:jvm的加载机制就是,将class文件加载到内存中,对加载的文件内容进行验证,准备、转换和...原创 2019-01-06 00:53:05 · 119 阅读 · 0 评论 -
深入理解Java虚拟机,学习笔记(三)垃圾收集器对比
第二章,垃圾收集器新生代垃圾收集器serial 收集器ParNew 收集器Parallel Scavenge 收集器老年代垃圾收集器serial old 收集器Parallel old 收集器CMS 收集器G1 收集器Remembered Set回收过程新生代垃圾收集器serial 收集器又称串行收集器。回收算法:复制算法适用于Client端与用户交互缺点:因为是单线程的,所以在收集的...原创 2019-01-02 14:28:03 · 185 阅读 · 0 评论 -
深入理解Java虚拟机,学习笔记(五)类加载器
类加载器加载与类加载器类与类加载器类加载器同类不同类加载器显示加载与隐式加载双亲委派模型破坏双亲委派模型第一次破坏第二次破坏线程上下文类加载器第三次破坏加载与类加载器之前说到加载有三个步骤:1.根据类对全限定名来获取类的二进制字节流2.将字节流中的静态结构转换成方法区的运行时的数据结构3.在内存中生成一个Class对象,作为访问方法区的类数据的一个入口类加载是与第一步相关,因为如何获取...原创 2019-01-07 20:47:02 · 111 阅读 · 0 评论 -
深入理解Java虚拟机,学习笔记(六)Java内存模型
Java内存模型硬件的效率与一致性Java 内存模型主内存和工作内存内存间交互操作volatile型变量的规则和性质可见性禁止重排序原子性、可见性、有序性原子性可见性有序性hapens-before硬件的效率与一致性硬件的效率不是每个都像处理器一样高效,所以在处理器和内存之间引入了cache(高速缓存)。cache的出现同时也增加了计算机系统的复杂度。因为如果是多核处理器,每个cpu里面都...原创 2019-01-09 00:53:13 · 211 阅读 · 0 评论 -
深入理解Java虚拟机,学习笔记(七)线程安全与锁优化
线程安全与锁优化线程安全定义java语言中的线程安全不可变绝对线程安全相对线程安全线程兼容线程独立同步实现的方悲观锁和乐观锁锁优化自旋锁与自适应自旋锁消除锁粗化轻量级锁偏向锁线程安全定义当一个对象被多线程调用的时候,不用在乎线程之间的交替执行,也不需要额外的同步操作,同时也不需要调用方协调操作,得到的结果都是正确的,那么可以说这个对象是线程安全的。java语言中的线程安全不可变被fina...原创 2019-01-09 21:43:43 · 305 阅读 · 1 评论