内存

● 线程私有:程序计数器,虚拟机栈,本地方法栈

● 线程共享: 方法区,堆

判断存活算法

● 引用计数法:无法解决循环引用问题。

● 可达性分析算法: 从GCRoot作为起始点,向下搜索,经过的路径成为引用链,当一个对象没有任何引用链相连(不可达时),则证明该对象不可用,进行第一次标记,如果第二次还不可用,则在gc时回收。

可作为GcRoot的对象:

● 虚拟机栈中引用的对象。

● 方法区中类静态属性引用的对象

● 方法区中常量引用的对象

● 本地方法栈中JNI引用的对象

Java引用类型:

● 强引用: 最普遍的,new出来的对象

● 软引用: 有用但非必须的对象,在oom时,进行回收

● 弱引用: 非必须的对象,下次gc时回收

● 虚引用:一个对象是否有虚引用完全不会对其生存时间构成影响,虚引用的唯一目的是能在这个对象被收集器时收到一个系统通知。

回收方法区:

方法区回收性价比低,主要回收两部分:废弃常量和无用的类。判断为无用的类条件:

1.该类所有实例已经被回收

2.加载该类的classloader已经被回收

3.该类的java.lang.class对象没有在任何地方引用,无法通过放射访问该类的方法。

垃圾收集算法

  1. 标记-清除算法:

    ● 先标记后回收

    ● 缺点:效率问题,标记和清除效率都不高,空间问题,清除以后会产生大量内存碎片

    2.复制算法:

    ● 将survivor(存活区)分两块,由于大部分对象(98%)都是"朝生夕死"所以将Eden区和正在使用的survivor区复制到另一个survivor区,eden:survivor 8:1左右。并且有老年区担保机制

    ● 适合于年轻代

    3.标记整理算法:

    ● 标记之后让存活对象往一端移动,清除另一段的无用对象

    ● 适合于老年代

    4.分代收集:

    ● 新生代采用复制算法,老年代采用标记整理算法

Hotspot算法实现

● GCRoots:在oopmap的协助下,快速完成GCRoots枚举,oopmap只有在某些代码位置生成,在安全点(方法调用返回,可能异常点,循环跳转)中断进行回收。改进为安全区域(无引用关系变化

垃圾收集器

● serial收集器:单线程收集器,stop the world,

● ParNew收集器:Serial多线程版本,能与cms搭配。

● Parallel Scavenge收集器:自适应调节策略,高吞吐量,多线程并行,

● CMS收集器:以获取最短回收停顿时间为目标的收集器。四个步骤:1.初始标记 2.并发标记,3.重新标记,4.标记清除。初始标记和重新标记需要停顿,这段时间较短, 并发标记和并发清除时间长,cms并发执行。

缺点:无法处理浮动垃圾。内存碎片。

● G1收集器:

1.并行与并发 2.分代收集 3.空间整合 4.可预测停顿。

可用于新生代和老年代,内存中它们不再隔离。跟踪合个region里的价值大小维护优先列表,每次根据允许的收集时间,优先回收价值最大的region。

jvm垃圾收集器总结jdk1.7的更多相关文章

  1. 7种JVM垃圾收集器特点,优劣势、及使用场景

    今天继续JVM的垃圾回收器详解,如果说垃圾收集算法是JVM内存回收的方法论,那么垃圾收集器就是内存回收的具体实现. 一.常见的垃圾收集器有3类 1.新生代的收集器包括 Serial PraNew Pa ...

  2. 第五章 JVM垃圾收集器(1)

    说明:垃圾回收算法是理论,垃圾收集器是回收算法的实现,关于回收算法,见<第四章 JVM垃圾回收算法> 1.七种垃圾收集器 Serial(串行GC)-- 复制 ParNew(并行GC)-- ...

  3. JVM垃圾收集器(1)

    此文已由作者赵计刚薪授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 说明:垃圾回收算法是理论,垃圾收集器是回收算法的实现,关于回收算法,见<第四章 JVM垃圾回收算法& ...

  4. 5种JVM垃圾收集器特点和8种JVM内存溢出原因

    先来看看5种JVM垃圾收集器特点 一.常见垃圾收集器 现在常见的垃圾收集器有如下几种: 新生代收集器: Serial ParNew Parallel Scavenge 老年代收集器: Serial O ...

  5. 7种 JVM 垃圾收集器特点、优劣势及使用场景(多图)

    7种 JVM 垃圾收集器特点.优劣势及使用场景(多图)  mp.weixin.qq.com 点击上方"IT牧场",选择"设为星标"技术干货每日送达! 一.常见垃 ...

  6. JVM调优:HotSpot JVM垃圾收集器

    HotSpot JVM垃圾收集器 - Snooper - 博客园https://www.cnblogs.com/snooper/p/8718478.html

  7. JVM垃圾收集器-Parallel Scavenge收集器

    今天我给大家讲讲JVM垃圾收集器-Parallel Scavenge收集器 Parallel Scavenge收集器 Parallel Scavenge收集器也是一个新生代收集器,它也是使用复制算法的 ...

  8. 【006】【JVM——垃圾收集器总结】

     Java虚拟机学习总结文件夹 JVM--垃圾收集器总结 垃圾收集器概览 收集算法是内存回收的方法论.垃圾收集据是内存回收的详细实现.Java虚拟机规范中对垃圾收集器应该怎样实现没有规定.不同的厂 ...

  9. 第六章 JVM垃圾收集器(2)

    上一章记录了几种常见的垃圾收集器,见<第五章 JVM垃圾收集器(1)> 1.G1 说明: 从上图来看,G1与CMS相比,仅在最后的"筛选回收"部分不同(CMS是并发清除 ...

随机推荐

  1. [BZOJ1002] [FJOI2007] 轮状病毒 (数学)

    Description 给定n(N<=100),编程计算有多少个不同的n轮状病毒. Input 第一行有1个正整数n. Output 将编程计算出的不同的n轮状病毒数输出 Sample Inpu ...

  2. 打造MacOS版“XShell”

    1.背景 XShell作为一个强大的安全终端模拟软件,它支持SSH1, SSH2, 以及Microsoft Windows 平台的TELNET 协议.作为server端开发,几乎是必备工具了. 很多刚 ...

  3. MongoDB存储引擎(中)——WiredTiger

    上一篇博文介绍了MongoDB的MMAPv1存储引擎,本文接着介绍MongoDB另一个存储引擎--WiredTiger,WiredTiger是在MongoDB3.0版本引入的,并且在MongoDB3. ...

  4. 2018第一波iOS经典笔试题(现场实拍)

    序言 作为一个开发者,眼里不仅仅只存在于那一行又一行的代码,更还有那诗和远方. 注明:面试是对自我审视的一种过程,面试题和iOS程序员本身技术水平没任何关联,无论你能否全部答出,都不要对自己产生任何正 ...

  5. 题目1031:xxx定律

    题目描述: 对于一个数n,如果是偶数,就把n砍掉一半:如果是奇数,把n变成 3*n+ 1后砍掉一半,直到该数变为1为止. 请计算需要经过几步才能将n变到1,具体可见样例. 输入: 测试包含多个用例,每 ...

  6. Redis分布式锁的正确实现方式

    前言 分布式锁一般有三种实现方式:1. 数据库乐观锁:2. 基于Redis的分布式锁:3. 基于ZooKeeper的分布式锁.本篇博客将介绍第二种方式,基于Redis实现分布式锁.虽然网上已经有各种介 ...

  7. HIVE和HADOOP的一些东西

    今天刚上班就要更新一个hive表(新年好呀我想说...),由于建立的外表直接替换hdfs文件就行了,但是替换完发现少了二行数据,原来之前做了关联,这就要用到hive的insert了! 先来说一下hiv ...

  8. 微信小程序之swiper组件高度自适应

    微信小程序之swiper组件高度自适应 要求: (顶部广告栏 ) 改变swiper组件的固定高度,使之随内部每张图片的高度做自适应 原理: 图片加载完之后,获取图片的原始宽高,根据宽高比,计算出适应后 ...

  9. 在做APP前端开发时应注意的一些问题

    在做APP前端开发时应注意的一些问题 在整个app开发流程中,app前端开发是一个必不可少的环节,也是一个在app开发过程中重量级的角色.说到这,那么在app应用的前端开发中,又要注意什么问题呢?一. ...

  10. Python 中的登陆获取数据跳转页面(不含数据库)

    简单表单和模板: import os.path import tornado.httpserver import tornado.ioloop import tornado.options impor ...