JVM
wu_foot
这个作者很懒,什么都没留下…
展开
-
如何判断一个对象是否存活
在堆里面存放着Java世界中几乎所有的对象实例,垃圾收集器对堆内存进行回收前,都会先判断这些对象之中哪些还“存活”着,哪些已经“死去”(即不可能在被任何途径使用的对象)。一共有两种算法:引用计数算法给对象中添加一个引用计数器,每当有一个地方引用它时,计数器值就加1;当引用失效时,计数器值就减1;任何时刻计数器为0的对象就是不可能再被使用的。JVM里面并没有选用引用计数算法来管理内存,主要原因是它很难解决对象之间相互循环引用的问题。可达性分析算法通过一系列的称为“GC Roots”原创 2020-05-22 16:32:57 · 212 阅读 · 0 评论 -
常见有五个垃圾回收器:
一:串行收集器:(Serial收集器)该收集器最古老、稳定简单是一个单线程的收集器,(stop-the-world)可能会产生长时间的停顿. serial 收集器一定不能用于服务器端。这个收集器类型仅应用于单核CPU桌面电脑。新生代和老年代都会使用serial收集器。新生代使用复制算法(内存分三块的那个复制算法)。老年代使用标记-整理算法。二:并行收集器:(Parallel收集器)parallel收集器使用多线程并行处理GC,因此更快。当有足够大的内存和大量芯数时,parallel收集...原创 2020-05-22 16:31:03 · 401 阅读 · 0 评论 -
jvm三种内存回收算法
看了大师的讲解记录下心得:这三种算法都是基于GCroot搜索出存活的对象1,标记-清除算法(stop-the-world );运用GCroot根搜索出引用链条上的所有可达对象标记为存活对象;将所有未标记的对象清除,释放出内存;特点:正向思维好理解,空间和时间都不高。内存碎片(因为无用的对象内存不是连续的因此清理后的内存也不是连续的,JVM还要维持一个空闲列表,增加一笔开销,同时在以后内存使用时候,去查找可用的内存这个效率也是很低的)。效率较低两次运算标记存活对象,查找已死对象删除已死对象。2原创 2020-05-22 16:22:06 · 815 阅读 · 0 评论