扩容新生代为什么能够提高GC的效率
扩容新生代为什么能够提高GC的效率
该文章默认读者对JVM的基础有所了解
在学习JVM的时候,遇到了个人感觉比较有意思的问题,通过视频学习整理了一下。
先来上图:
大部分情况下,对象都会进入Eden区进行分配,当该空间满了以后,进行轻GC,如果对象存活,则会进入s0或者s1。
扩展:如何判断对象存活
采用根可达性分析算法来判断
可作为根的对象有:
- 虚拟机栈中引用的对象
- 本地方法栈中引用的对象
- 方法区中类静态属性引用的对象
- 方法区常量引用的对象
GC的耗时由两部分组成:
- 扫描整个新生代所要花费的时间
- 将存活对象复制到幸存区的时间
所以CG耗时=T1+T2;
假设:
新生代空间 (Space1): 200m,每隔5s GC一次,每次GC耗时100ms
GC=T1+T2=100ms
扩容新生代空间(Space2)(两倍): 400m,每隔10s GC一次,每次GC耗时200ms
GC=2*(T1+T2) =200ms ?(对不对)
其中我们需要考虑对象A的存活时间,它会影响到T2时间。
假设对象A存活时间:7S;
在Space1中 GC的时候对象A是存活的,那么就需要对对象进行移动,所以Space1中的GC=T1+T2。
在Space2中GC的时候对象A变为垃圾,那么就不需要对垃圾进行移动,所以在Space2中的GC=2*T1;
在垃圾回收算法中,JVM中移动内存对象的耗时比扫描(算法有优化)整个新生代的耗时是远远高于的。(前提条件)
由此可以得出,扩大新生代确实能够提高GC的效率,其中起决定的因素不是空间的大小,而是存活对象的大小;
增加整个空间的大小,可以拉长GC的间隔,从而尽可能的使得对象变为垃圾,来减少内存的移动。
扩容新生代为什么能够提高GC的效率的更多相关文章
- 提高SQL查询效率(SQL优化)
要提高SQL查询效率where语句条件的先后次序应如何写 http://blog.csdn.net/sforiz/article/details/5345359 我们要做到不但会写SQL,还要做到 ...
- 提高php编程效率技巧
提高php编程效率技巧 投稿:mrr 字体:[增加 减小] 类型:转载 时间:2015-08-13 php是全球范围应用范围最广的开发语言,php和linux.apache.mysql紧密结合,形 ...
- java提高数据库访问效率代码优化
package com.jb.jubmis.comm; import java.sql.Connection;import java.sql.ResultSet;import java.sql.SQL ...
- iOS开发——实用篇&提高iOS开发效率的方法和工具
提高iOS开发效率的方法和工具 介绍 这篇文章主要是介绍一下我在iOS开发中使用到的一些可以提升开发效率的方法和工具. IDE 首先要说的肯定是IDE了,说到IDE,Xcode不能跑,当然你也可能同时 ...
- 提高SQL查询效率的常用方法
提高SQL查询效率的常用方法 (1)选择最有效率的表名顺序(只在基于规则的优化器中有效): Oracle的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表(基础表 driv ...
- 使用Dropbox提高个人数据管理效率
Dropbox 应该大家都不陌生,其在云存储阵营中独树一帜,通俗的说它是提供多终端和云之间的数据同步服务,而就其本质来说它无非是将数据的采集.存储和分发三个关节打通,整合成统一服务对外提供.这就好比只 ...
- html样式表极大地提高了工作效率
样式表极大地提高了工作效率 样式表定义如何显示 HTML 元素,就像 HTML 3.2 的字体标签和颜色属性所起的作用那样.样式通常保存在外部的 .css 文件中.通过仅仅编辑一个简单的 CSS 文档 ...
- 提高你开发效率的十五个Visual Studio 2010使用技巧
提高你开发效率的十五个Visual Studio 2010使用技巧 相信做开发的没有不重视效率的.开发C#,VB的都知道,我们很依赖VS,或者说,我们很感谢VS.能够对一个IDE产生依赖,说明这个ID ...
- 提高运维效率(二)桌面显示IP
运维人员远控电脑询问IP时,总要告诉用户找ip的步骤,岂不很烦? 以下方法直观地把ip地址显示在桌面上,再做个入职培训,即可提高运维效率. 1. 下载bginfo.exe软件,放到域控下的netlo ...
随机推荐
- 自定义C语言CVector
CVector.h // // cvector.h // GKApp // // Created by 王明辉 on 16/4/15. // Copyright (c) 2016年 GK. All r ...
- 【LeetCode】467. Unique Substrings in Wraparound String 解题报告(Python)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 题目地址: https://leetcode.com/problems/unique-s ...
- 【剑指Offer】扑克牌顺子 解题报告(Python)
[剑指Offer]扑克牌顺子 解题报告(Python) 标签(空格分隔): 剑指Offer 题目地址:https://www.nowcoder.com/ta/coding-interviews 题目描 ...
- 利用shiro反序列化注入冰蝎内存马
利用shiro反序列化注入冰蝎内存马 文章首发先知社区:https://xz.aliyun.com/t/10696 一.shiro反序列化注入内存马 1)tomcat filter内存马 先来看一个普 ...
- MySQL中视图的定义、原理--触发器
视图概述 视图是一个虚拟表,其内容由查询定义.同真实的表一样,视图包含一系列带有名称的列和行数据.但是,视图并不在数据库中以存储的数据值集形式存在.行和列数据来自由定义视图的查询所引用的表,并且在引用 ...
- Kernel PCA and De-Noisingin Feature Spaces
目录 引 主要内容 Kernel PCA and De-Noisingin Feature Spaces 引 kernel PCA通过\(k(x,y)\)隐式地将样本由输入空间映射到高维空间\(F\) ...
- [高数]高数部分-Part II 导数与微分
Part II 导数与微分 回到总目录 Part II 导数与微分 一元函数微分的定义 一元函数定义注意点 基本求导公式 基本求导方法 复合函数求导 隐函数求导 对数求导法 反函数求导 参数方程求导 ...
- Capstone CS5213|HDMI转VGA|CS5213设计参考电路
Capstone CS5213是一款HDMI到VGA转换器结合了HDMI输入接口和模拟RGB DAC输出且带支持片上音频数模转换器.CS5213芯片设计简单,整体芯片尺寸精悍,外围电路集成优化度较高, ...
- HTML5 纯CSS3实现div按照顺序出入效果
效果: 源代码: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> < ...
- Linux查看CPU详细信息
1.查看CPU详细信息 在Linux服务器上查看CPU详细信息: cat /proc/cpuinfo 输出结果: processor : 0 vendor_id : GenuineIntel cpu ...