垃圾回收器如何确定哪些对象要回收: 引用计数法 很多教科书判断对象是否存活的算法是这样的:给对象添加一个引用计数器,每当有一个地发引用它时,计数器值就加1;当引用失效时,计数器值就减1;任何时刻计数器都...
分类:
编程语言 时间:
2015-04-08 21:40:27
阅读次数:
141
第一周:From:2015.03.09To:2015.03.15学习:看书,《深入理解Java虚拟机(第二版)》、《Head First JSP & Servlet》和《淘宝技术这十年》。《深入理解Java虚拟机》有的地方没看懂,囫囵吞枣地就过了,还得再看一遍。Head First系列的书籍相当不错...
分类:
其他好文 时间:
2015-04-06 21:50:06
阅读次数:
223
主内存与工作内存 Java内存模型的主要目标是定义程序中各个变量的访问规则,即在虚拟机中将变量存储到内存和从内存中取出变量值这样的底层细节。 此处的变量(Variable)与Java编译中所说的变量略有区别,它包括了实例字段,静态字段和构成数组对象的元素,但是不包括局部变量与方法参数,因为后者是线程...
分类:
编程语言 时间:
2015-04-06 11:18:29
阅读次数:
137
当一个变量定义成volatile之后,它将具备两种特性: 1、第一是保证此变量对所有线程的可见性,这里的"可见性"是指当一条线程修改了这个变量的值,新值对于其它线程是可以立即得知的,变量值在线程间传递均需要通过主内存来完成,如:线程A修改一个普通变量的值,然后向主内存进行回写,另外一条线程B在线程A...
分类:
编程语言 时间:
2015-04-06 11:15:49
阅读次数:
171
站在虚拟机的角度上,只存在两种不同的类加载器: 一种是启动类加载器(Bootstrap ClassLoader),这个类加载器使用C++语言实现,是虚拟机自身的一部分; 另外一种就是其它所有的类加载器,这些类加载器都由Java语言实现,独立于虚拟机外部,并且全部继承自java.lang.ClassL...
分类:
编程语言 时间:
2015-04-04 22:33:20
阅读次数:
1714
【哪些内存需要回收】 当对象判定为"已死"状态,虚拟就要采取一定的手段将这些对象从内存中移除。 1.引用计数算法 很多教科书判断对象是否存活的算法是这样的:给对象中添加一个引用计数器,每当有一个地方引用它时,计数器值加1;当引用失效时,计数器减1;任何时刻计数器都为0的对象就是不可能再被使用的。 引...
分类:
编程语言 时间:
2015-04-04 15:08:14
阅读次数:
180
几条主要的最普遍的内存分配规则: 1.对象优先在Eden分配 大多数情况下,对象在新生代的Eden区中分配。 当Eden区没有足够的空间进行分配时,虚拟将发起一次Minor GC,如果GC后新生代中存活的对象无法全部放入Survivor空间,则需要通过分配担保机制提前进入到老年代中,前提是老年代中不...
分类:
编程语言 时间:
2015-04-04 14:56:08
阅读次数:
143
这句话感觉道出了GC的本质 1.程序计数器(Program Counter Register) 程序计数器是一块较小的内存空间,它的作用可以看做是当前线程所执行的字节码的行号指示器。字节码解释器工作时就是通过改为这个计数器的值来选取下一条需要执行的字节码指令,分支、循环、跳转、异常处理、线程恢复等基...
分类:
编程语言 时间:
2015-04-04 12:09:53
阅读次数:
204