JVM
毛小树
Explore the unknown world!
展开
-
深入理解 JVM——谈谈TLAB
最近疫情很严重啊,大家尽量别出门戴好口罩保护好自己哈。在家翻翻深入理解 Java 虚拟机这本神书,有这样一段话:“对象的内存分配,往大方面讲,就是在堆上分配(但也可能经过 JIT 编译后被拆散为标量类型并间接地在栈上分配),对象主要分给在新生代的 Eden 区上,如果启动了本地线程分配缓冲,将按线程优先在 TLAB 上分配,少数情况下也可能会直接分配在老年代中…”那么什么是 TLAB 呢?这玩意...原创 2020-02-02 12:01:48 · 954 阅读 · 0 评论 -
深入理解 JVM——虚拟机类加载机制
类的生命周期是怎样的?加载->验证->准备->解析->初始化->使用->卸载 (为了支持 Java 语言的运行时绑定 动态绑定,解析可在初始化后完成。)什么是类加载?把 .class 文件加载到内存,对其校验,转换,解析,初始化,最终形成可被虚拟机直接使用的 Java 类型的过程。类加载的具体过程是怎样的?加载:通过类的全限定名获取二进制字节流。将...原创 2020-01-31 22:05:56 · 230 阅读 · 0 评论 -
深入理解JVM——垃圾回收算法
一、标记—清除算法介绍 最基础的收集算法涉及“标记”和“清除”:首先标记所需回收的对象,一并清除。特征 效率不高空间问题:结束后产生大量不连续的内存碎片,导致后续分配大内存对象时不得不提前触发垃圾收集操作。 二、复制算法1.介绍内存均分成两块,但只使用其中一块,这块用完了就将还存在的对象复制到第二块中,一次性清除使用过的内存空间。无需考虑内存碎片问题2...原创 2018-03-05 09:48:35 · 274 阅读 · 0 评论 -
深入理解JVM——volatile in Java
第一次面试时,interviewer问“你对volatile了解多少?”由于interviewer的发音(英:[ˈvɒlətaɪl]))有些不准,笔者很傻地问了好几遍“您说什么?”,然后…直接GG了。volatile是JVM提供的最轻量级的同步机制,作为应届生面试中常见的关键字考察点,一块来学习下吧~Java内存模型volatile语义: 可见性禁止重排序无法保证一致性应用场景...原创 2018-03-03 10:50:57 · 673 阅读 · 0 评论 -
深入理解JVM——Java的四种引用类型浅析
强引用,软引用,弱引用,虚引用.不同的引用类型主要体现在GC上:强引用:如果一个对象具有强引用,它就不会被垃圾回收器回收。即使当前内存空间不足,JVM也不会回收它,而是抛出 OutOfMemoryError 错误,使程序异常终止。如果想中断强引用和某个对象之间的关联,可以显式地将引用赋值为null,这样一来的话,JVM在合适的时间就会回收该对象。Object object = new ...原创 2017-09-22 09:26:17 · 841 阅读 · 0 评论 -
深入理解JVM——Java运行时数据区域浅析
JVM在运行时将其内存区域划分为不同的区域,各区域承担的职责和生命周期不尽相同,有的随着JVM进程的存在(消亡)而存在(消亡),而有些则是线程私有的,生命周期与其所在线程一致。和笔者一块学习一下吧~方法区(Method Area)Java堆(Heap)虚拟机栈(VM Stack)本地方法栈(Native Method Stack)程序计数器(PCR)方法区(别名:Non-H...原创 2018-03-02 10:49:55 · 285 阅读 · 0 评论