jvm垃圾回收(三)

一、分代思想(年轻代、老年代、永久代):
1、一个新人(new对象)会优先在伊甸园(Eden区)出生,当伊甸园(Eden区)人口达到最大容量时,JVM会派MinorGC去看看哪些人还有价值
2、伊甸园(Eden区)和From区中有价值的孩子会进入到To区,接着清空伊甸园和Form区,再将To区乾坤大挪移变成From区,最后将这些有价值的孩子年龄增加1岁
3、人口不断增长,JVM频繁触发minorGC,有价值的小孩年龄逐渐变大,当达到法定年龄时(默认15次)会进入老年代,过上一段相对稳定的生活
4、进入老年代并不意味着就安全了,JVM会派MajorGC去看看哪些人没有价值了,没有价值的人就被清掉了
二、可达性分析算法之对象生死判官(GC ROOTS对象):
1、虚拟机栈(本地变量表)中引用的对象
2、方法区的类静态属性引用的对象
3、方法区的常量引用的对象
4、本地方法栈JNI(Native方法)引用的对象

三、垃圾回收算法:
1、复制算法
将可用内存划分为大小相等的两块内存A、B,每次只用内存块A,当内存块A用完,将存活的对象复制到内存块B中,然后清空内存块
优点:垃圾回收后空间连续、无内存碎片、适合朝生夕死的对象
缺点:内存空间浪费、每次只能使用一半内存

2、标记清除算法
分成标记和清除两个阶段:标记出待回收的对象(可达性分析算法),清理掉所有待回收的对象
优点:不会损失50%的空间、可解决循环引用的问题
缺点:效率不高、会产生大量不连续的内存碎片

3、标记整理算法
首先标记出待回收的对象,将存活的对象都移动到一端,然后清理掉边界以外的内存
优点:不会损失50%的空间、回收后空间连续
缺点:效率不高

四、JVM参数:
-server JVM使用server模式(采用相对重量级,代号为C2的编译器. C2比C1编译器编译的相对彻底,服务起来之后,性能更高)
-Xms2048m 堆的最小值
-Xmx2048m 堆的最大值
-XX:PermSize=128M 方法区的大小
-XX:MaxDirectMemorySize=2048m 本机直接内存
-XX:MaxTenuringThreshold=15 晋升老年代的年龄
-XX:NewRatio=1 年轻代和老年代的比值
-XX:+UseConcMarkSweepGC 使用ParNew + CMS + Serial Old的收集器组合进行内存回收,Serial Old作为CMS出现“Concurrent Mode Failure”失败后的后备收集器使用
-XX:CMSInitiatingOccupancyFraction=75 设置CMS收集器在老年代空间被使用多少后触发
-XX:+PrintGCApplicationStoppedTime 打印垃圾回收期间程序暂停的时间
-XX:+PrintGCDetails 打印GC详细日志
-XX:+HeapDumpOnOutOfMemoryError JVM异常自动生成堆转储
-XX:HeapDumpPath= 堆转储文件名
-XX:-OmitStackTraceInFastThrow 禁用堆栈异常优化
-XX:-UseBiasedLocking 禁用偏向锁(在存在大量锁对象的创建并高度并发的环境下禁用偏向锁能够带来一定的性能优化)
-XX:AutoBoxCacheMax=20000 自动装箱和拆箱范围设置(节省了常用数值的内存开销和创建对象的开销,提高了效率)
-XX:+CMSParallelInitialMarkEnabled 开启初始标记过程中的并行化,进一步提升初始化标记效率
jvm垃圾回收(三)的更多相关文章
- JVM学习(三)JVM垃圾回收
一.引用的分类 在了解JVM垃圾回收机制之前,了解一下对象的引用类型是非常必要的. 强引用:GC时不会被回收 软引用:描述有用但不是必须的对象,在发生内存溢出异常之前被回收 弱引用:描述有用但不是必须 ...
- JVM基础系列第8讲:JVM 垃圾回收机制
在第 6 讲中我们说到 Java 虚拟机的内存结构,提到了这部分的规范其实是由<Java 虚拟机规范>指定的,每个 Java 虚拟机可能都有不同的实现.其实涉及到 Java 虚拟机的内存, ...
- Java虚拟机垃圾回收(三) 7种垃圾收集器
Java虚拟机垃圾回收(三) 7种垃圾收集器 主要特点 应用场景 设置参数 基本运行原理 在<Java虚拟机垃圾回收(一) 基础>中了解到如何判断对象是存活还是已经死亡?在<Java ...
- Java虚拟机垃圾回收:内存分配与回收策略 方法区垃圾回收 以及 JVM垃圾回收的调优方法
在<Java对象在Java虚拟机中的创建过程>了解到对象创建的内存分配,在<Java内存区域 JVM运行时数据区>中了解到各数据区有些什么特点.以及相关参数的调整,在<J ...
- jvm垃圾回收原理(转)
原文链接:jvm垃圾回收原理 在jvm中堆空间划分为三个代:年轻代(Young Generation).年老代(Old Generation)和永久代(Permanent Generation).年轻 ...
- JVM垃圾回收算法(最全)
JVM垃圾回收算法(最全) 下面是JVM虚拟机运行时的内存模型: 1.方法区 Perm(永久代.非堆) 2.虚拟机栈 3.本地方法栈 (Native方法) 4.堆 5.程序计数器 1 首先的问题是:j ...
- JVM内存管理、JVM垃圾回收机制、新生代、老年代以及永久代
内存模型 JVM运行时数据区由程序计数器.堆.虚拟机栈.本地方法栈.方法区部分组成,结构图如下所示. JVM内存结构由程序计数器.堆.栈.本地方法栈.方法区等部分组成,结构图如下所示: 1)程序计数器 ...
- JVM 垃圾回收机制和常见算法和 JVM 的内存结构和内存分配(面试题)
一.JVM 垃圾回收机制和常见算法 Sun 公司只定义了垃圾回收机制规则而不局限于其实现算法,因此不同厂商生产的虚拟机采用的算法也不尽相同.GC(Garbage Collector)在回收对象前首先必 ...
- JVM垃圾回收?看这一篇就够了!
深入理解JVM垃圾回收机制 1.垃圾回收需要解决的问题及解决的办法总览 1.如何判定对象为垃圾对象 引用计数法 可达性分析法 2.如何回收 回收策略 标记-清除算法 复制算法 标记-整理算法 分带收集 ...
- 【搞定Jvm面试】 JVM 垃圾回收揭秘附常见面试题解析
JVM 垃圾回收 写在前面 本节常见面试题 问题答案在文中都有提到 如何判断对象是否死亡(两种方法). 简单的介绍一下强引用.软引用.弱引用.虚引用(虚引用与软引用和弱引用的区别.使用软引用能带来的好 ...
随机推荐
- cocos2dx 3.3 + QT5.3制作游戏编辑器
欢迎转载,但请注明本blog地址,谢谢_(:зゝ∠)_ http://www.cnblogs.com/marisa/p/4141862.html 主要参考: http://blog.csdn.net/ ...
- Leetcode_38_count-and-say
本文是在学习中的总结,欢迎转载但请注明出处:http://blog.csdn.net/pistolove/article/details/41257397 The count-and-say sequ ...
- Gradle 1.12 翻译——第十八章. 日志
有关其他已翻译的章节请关注Github上的项目:https://github.com/msdx/gradledoc/tree/1.12,或访问:http://gradledoc.qiniudn.com ...
- 【一天一道LeetCode】#56. Merge Intervals
一天一道LeetCode系列 (一)题目 Given a collection of intervals, merge all overlapping intervals. For example, ...
- (二十七)QQ好友列表的实现
QQ好友列表通过plist读取,plist的结构为一组字典,每个字典内有本组的信息和另外一组字典代表好友. 要读取plist,选择合适的数据结构,例如NSArray,然后调用initWithConte ...
- PDA开发数据由本地上传至DB
private void btnUpLoad_Click(object sender, EventArgs e) { if (!System.IO.File.Exists(LoadFile)) { M ...
- Cocos2D绘制纹理的一般方法
如果你想在通常情况下绘制纹理,最简单的方法是在CCSprite的子类中实现.否则你将不得不自己创建一个CCRenderState对象传递给blend模式,着色器以及(可选的)纹理给CCRenderer ...
- ERP-非财务人员的财务培训教(一.二)------财务基础知识
二.基本财务管理知识 第一节 财务管理基础知识(一) 财务与会计的关系 会计的基础知识 (一) 财务与会计的关系 财务与会计的内涵 1.会计 会计工作主要是解决三个环节的问题: 会计凭证 会计账簿 会 ...
- android的服务分类-andrioid学习之旅(94)
摘自韩国棒子的书,android框架摘要 android服务类型分类,如下图: 对于本地服务,有两种类型,一中是绑定进行数据交流,一种是不绑定的,生命周期如下图:
- Http的会话跟踪和跨站攻击(xss)
会话跟踪 什么是会话? 客户端打开与服务器的连接发出请求到服务器响应客户端请求的全过程称之为会话. 什么是会话跟踪? 会话跟踪指的是对同一个用户对服务器的连续的请求和接受响应的监视. 为什么需要会话跟 ...