jvm读书笔记
文章平均质量分 84
Dorma_Bin
巧者劳而智者忧,无能者无所求,饱食而遨游,泛若不系之舟...
展开
-
Java内存区域划分及对象的访问方式
JVM 内存区域划分JVM 内存区域划分如图:下面对以上划分具体讲解:程序计数器程序计数器用来指示当前字节码执行到第几行。每个计数器只能记录一个线程的行号,所以他是线程私有的。 当程序执行Java方法时,其记录当前执行指令地址; 当执行本地(native,使用c语言编译)方法时,其值为 Undefined 由于其单一功能,它是唯一一个没有内存溢出(OutOfMemoryError)的区域.原创 2018-01-06 02:09:39 · 700 阅读 · 0 评论 -
Java堆内存分配机制
Java堆内存分配机制在Java的内存区域中,程序计数器,虚拟机栈,本地方法栈3个区域随线程而生,随线程而灭;栈中的栈帧随着方法的进入和退出执行入栈和出栈。因此这几个内存区域的内存分配和划分都具有确定性。而Java堆不一样。由于其不确定性,JVM关注的内存分配与回收重点都在这。Java堆内存的分配整体可以概述为“自适应的,分代的,停止-复制,标记-清除”式的垃圾回收器。分代指Java将堆内存划分为年原创 2018-01-07 12:40:26 · 1186 阅读 · 0 评论 -
JVM是如何判断一个对象的存活?
引用计数算法先来说说我们经常听到的一种说法,引用计数算法。这种算法的大体思路是:给每一个对象添加一个引用计数器,每当有一个地方引用对象时,计数器的值+1;引用失效,值-1;任何时刻当计数器值为0时,这对象就是不可能再被使用的。客观的讲,引用计数算法实现简单,效率高。然而在主流的Java虚拟机中有没有使用此算法呢?我们一起来看看下面这个例子:public class CountGC { pu原创 2018-01-07 14:47:43 · 354 阅读 · 0 评论