JVM知识点总结

来源:互联网 发布:拒绝退款后淘宝介入 编辑:程序博客网 时间:2024/06/05 06:21

非常好的文章:

  • 深入理解Java虚拟机—自动内存管理机制 http://www.jianshu.com/p/3bfea2eda30a

1、JVM运行时内存划分

http://blog.csdn.net/hbtj_1216/article/details/76297636

JVM内存溢出详解(栈溢出,堆溢出,持久代溢出以及无法创建本地线程)

http://www.jianshu.com/p/cd705f88cf2a

Java内存泄露的理解与解决

http://www.cnblogs.com/binyue/p/3383555.html


对象的创建过程(new 的过程)

http://blog.csdn.net/hbtj_1216/article/details/77599911

对象的内存布局

http://blog.csdn.net/hbtj_1216/article/details/77599961

对象的访问定位

http://blog.csdn.net/hbtj_1216/article/details/77599990


2、有哪些常见的垃圾收集算法?

  • 标记-清除算法:首先标记出所有需要回收的对象,然后统一回收所有被标记的对象;缺点是效率不高且容易产生大量不连续的内存碎片;

  • 复制算法:将可用内存分为大小相等的两块,每次只使用其中一块;当这一块用完了,就将还活着的对象复制到另一块上,然后把已使用过的内存清理掉。在HotSpot里,考虑到大部分对象存活时间很短,将内存分为Eden和两块Survivor,默认比例为8:1:1。代价是存在部分内存空间浪费,且可能存在空间不够需要分配担保的情况,所以适合在新生代使用;

  • 标记-整理算法:首先标记出所有需要回收的对象,然后让所有存活的对象都向一端移动,然后直接清理掉端边界以外的内存。适用于老年代。

  • 分代收集算法:一般把Java堆分新生代和老年代,在新生代用复制算法,在老年代用标记-清理或标记-整理算法,是现代虚拟机通常采用的算法。

GC是如何判断一个对象为”垃圾”的?被GC判断为”垃圾”的对象一定会被回收吗?

http://blog.csdn.net/canot/article/details/51037938

3、常见的垃圾收集器

http://blog.csdn.net/hbtj_1216/article/details/76390743

4、JVM堆内存分配与回收策略

http://blog.csdn.net/hbtj_1216/article/details/76326868

5、Minor GC 与 Full GC 有什么不一样?

  • 新生代GC (Minor GC):指发生在新生代的垃圾收集动作,因为Java对象大多都具备朝生夕灭的特性,所以Minor GC 非常频繁,回収速度也比较快。新生代GC通常采用复制算法

  • 老年代GC (Major GC / Full GC):指发生在老年代的GC,Major GC是老年代GC,Full GC是整个堆上的GC。Major GC的速度一般会比Minor GC的速度慢10倍以上。老年代GC通常采用标记——整理算法

6、JVM类加载机制

http://blog.csdn.net/hbtj_1216/article/details/76376241

7、类加载器、双亲委派模型

http://blog.csdn.net/hbtj_1216/article/details/76383118

8、4种内存屏障

http://blog.csdn.net/hbtj_1216/article/details/76407876

8、Java内存模型

http://blog.csdn.net/hbtj_1216/article/details/76412084

9、 同步的三种方式:volatile、锁、final

http://blog.csdn.net/hbtj_1216/article/details/76407826

java对象头实现

http://www.jianshu.com/p/9c19eb0ea4d8

Object.finalize方法的实现原理

http://www.jianshu.com/p/9d2788fffd5f

原创粉丝点击