摘要: 实际生产G1 阅读全文
posted @ 2015-03-18 23:25 niutao 阅读(513) 评论(0) 推荐(0) 编辑
摘要: 如果说垃圾收集算法是内存回收的方法论,那么垃圾收集器就是内存回收的具体实现 (图中有连线的地方代表可以配合使用) Serial收集器 单线程收集器,“单线程”的意义不仅仅说明它只会使用一个CPU或一个收集线程去完成垃圾收集工作; 更重要的是它在垃圾收集的时候,必须暂停其他工作线程,直到垃圾收集完毕; 阅读全文
posted @ 2015-03-18 23:23 niutao 阅读(268) 评论(0) 推荐(0) 编辑
摘要: 复制算法 复制算法将可用的内存容量划分成大小相等的两块,每次只使用其中的一块; 回收后: 当这一块内存用完,就会将还存活的对象放在另一块区域上,然后再把已使用的内存空间一次清理掉,这样每次清理垃圾的时候都是对整个半区进行垃圾回收,内存分配的时候也不用考虑内存碎片的问题了,这样对于内存的回收就更加简单 阅读全文
posted @ 2015-03-18 23:11 niutao 阅读(176) 评论(0) 推荐(0) 编辑
摘要: 如何判断这个对象是存活的还是无用的 1):引用计数器 引用计数器定义: 定义:给每个对象分配一个计算器,当有引用指向这个对象时,计数器加1,当指向该对象的引用失效时,计数器减一。最后如果该对象的计算器为0时,java垃圾回收器会认为该对象是可回收的。 很多人认为的是:给对象添加一个引用计数器,每当有 阅读全文
posted @ 2015-03-18 23:06 niutao 阅读(238) 评论(0) 推荐(0) 编辑
摘要: 其中线程共享区域:方法区 、 堆 线程私有区域:虚拟机栈、本地方法栈、程序计数器 程序计数器 虚拟机栈 程序员经常说“堆栈”,其中的栈就是虚拟机栈,更确切的说,大家谈的栈是虚拟机中的局部变量表部分; 虚拟机栈描述的是:Java方法执行的内存模型;(说白了就是: 虚拟机栈就是用来存储:局部变量、操作栈 阅读全文
posted @ 2015-03-18 22:57 niutao 阅读(429) 评论(0) 推荐(0) 编辑
摘要: Java程序从创建到运行要经过两个大步骤 1:源文件(.java)由编译器编译成字节码ByteCode(.class) 2:字节码由Java虚拟机解释并运行 源文件编译成字节码,主要分成两个部分: 字节码由Java虚拟机解析运行分成两个部分: 程序运行的详细步骤:(运行一个对象下的方法内部的细节) 阅读全文
posted @ 2015-03-18 22:41 niutao 阅读(219) 评论(0) 推荐(0) 编辑