随笔分类 -  Java虚拟机

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