随笔分类 - Java虚拟机
摘要:1:传统回收器 1.1:serial 如上图所示:每当进行GC操作时,就将所有的用户线程停下来,然后运行一个GC线程进行垃圾回收,显然效率慢,延迟高。 1.2:parallel 为了改进串行的缺点,使用并行的垃圾回收方法,当进行垃圾回收时,不仅仅开启一个线程用来垃圾回收,而是开启多了线程进行垃圾回收
阅读全文
摘要:所谓"GCroots的“根集合”就是一组必须活跃的引用,在JVM中什么样的对象可以作为GC roots尼? 一般而言我们分析出来有以下特点的对象引用是可以作为GC roots的。 栈帧当中本地变量表中引用的对象。 方法区中类static类型的引用。 方法区中常量类型的引用。 本地native方法中引
阅读全文
摘要:1:根本原因 长生命周期的对象持有短生命周期对象的引用会导致内存泄露。这是因为虽然短生命周期的对象已经没有了外部引用,可以被i释放了,但是被长生命周期的对象持有,不能释放。 2:具体情况 2.1:集合类引起内存泄露 比如:集合类中存放指定对象,但是对象引用已经失效,由于对象存放在集合中,所以无法释放
阅读全文
摘要:1:类的加载时机 类从被加载到虚拟机内存到移除虚拟机内存后,其生命周期经过过一下7个过程,加载loading,验证verfication,准备preparetion,解析resolution,初始化initaltion,使用using,卸载outloading。其中必须要经过阶段有5个,是加载loa
阅读全文
摘要:1:对象状态判断 在介绍垃圾回收算法前,有一件很重的事情就是,如何判断对象是否已经死了?也就是如何判断对象是不是可以被回收了,只有处于死亡状态的对象才有可能被垃圾回收。有下面两种方法判断对象是存活还是死亡? 1.1:引用计数法 算法描述;给对象添加一个引用计数器,每当有一个地方引用它时,该计数器+1
阅读全文
摘要:1:JVM运行数据区介绍 对于Java程序员来说,在虚拟机自动内存管理机制的帮助下,不再需要每一个new的对象去主动进行delete和free代码操作,不容易出现内存泄露。当然也是整因为这个原因,当一旦出现内存泄露,溢出,那么排除将是一个十分难的问题。 所有线程共享的内存区域: 方法区(Method
阅读全文

浙公网安备 33010602011771号