当前位置: 首页 > 编程日记 > 正文

Java虚拟机垃圾收集算法

1、标记-清除算法

标记-清除算法分为 “标记” 和 “清除” 两个步骤:首先标记出所有需要回收的对象,然后在标记完成后统一回收所有被标记的对象,是垃圾收集算法中的最基础的收集算法。

缺点:一、标记和清除两个步骤效率都不高;二、清除后产生大量不连续的内存空间,空间碎片太多产生可能会导致以后在程序运行过程中需要分配较大的对象时,无法找到足够的连续空间而不得不触发一次垃圾收集动作。

2、复制算法

复制算法将可用的内存按照容量大小分为大小相等的两块,每次只使用其中的一块,当这一块使用完了之后,就将还存活的对象复制到另一块内存上,然后再把已使用过的内存空间一次性清理掉。

优点:实现简单,运行效率高;

缺点:可用内存缩小了一半,代价大;

现在商业虚拟机都采用这种收集算法来回收新生代,因为根据IBM公司的研究,新生代中的对象98%是 “朝生夕死” 的,所以不需要按照 1:1 的比例来划分内存空间,而是将内存划分为一块较大的Eden空间和两块较小的Survivor空间,每次只使用Eden和其中一个Survivor,当回收时,将Eden和Survivor中还存活的对象一次性复制到另一个Survivor空间。HotSpot虚拟机默认 Eden与Survivor空间的比例是8:1。

3、标记-整理算法

复制算法在对象存活率较高时需要进行多次复制操作,效率将会变低。更是为了节省内存,根据老年代的特点,出现了 "标记-整理" 算法。

标记-整理算法分为 “标记” 和 “整理” 两个步骤:首先标记出所有需要回收的对象,然后在标记完成之后让存活的对象都要都向内存的一端移动,最后清理掉端边界以外的内存。

4、分代收集算法

根据各个年代的特点,不同的年代采用不同的收集算法。

在新生代,每次垃圾收集时发现有大量对象死去,只有少量的存活,那就选用复制算法,只需要付出少量存活对象的复制成本就可以完成收集。

在老年代,由于对象存活率高、没有额外空间对它进行担保,就必须使用 “标记-清理” 或者 “标记-整理” 算法来进行回收。

转载于:https://www.cnblogs.com/super-jing/p/10790733.html

相关文章:

WMIC的用法

获得系统版本信息wmic datafile where Namec:\\windows\\explorer.exe get Manufacturer,Version,Filename获得信筒进程 wmic process list full 注意:这里的full也可以换成brief(简洁)获得硬件信息(这里以cpu为例&#xf…

洛谷P2763 试题库问题

题目:https://www.luogu.org/problemnew/show/P2763 题目描述 问题描述: 假设一个试题库中有n道试题。每道试题都标明了所属类别。同一道题可能有多个类别属性。现要从题库中抽取m 道题组成试卷。并要求试卷包含指定类型的试题。试设计一个满足要求的组卷…

梦断代码阅读笔记03

经过几天的阅读,终于将这本书看完了,读完了整个故事,我进行了简单的总结,感觉不仅仅是在写代码与计算机或软件交流,更多的是做事行为。 首先是做事得有目标。无论做什么事情都要有目标和动力,这样做起事来无…

能让导师喜欢的学生(转自论坛)

第一,明辨是非,从善如流。研究生是未来的高级知识分子,作为国家栋梁,将来很可能为国家和社会发展献计献策,如果不能明辨是非,如何做出正确建议和决策?如果不能从善如流,如何保证自己…

使用SpringBoot发送邮件 在本地测试是好的 放到服务器连接超时问题

原因 原来是ECS基于安全考虑,禁用了端口25。改成465就可以发邮件了。 原始配置 本地可发送 #spring.mail.hostsmtp.qq.com #spring.mail.usernameqq #spring.mail.passwordpassword #spring.mail.properties.mail.smtp.starttls.enabletrue #spring.mail.prope…

电脑中所有exe文件无法运行解决方案

电脑中所有exe文件无法运行。通过系统恢复无法解决毛病,后来才想起肯定是exe文件关联被改动,只有通过修改注册表才能改回来。要修改注册表就要运行regedit.exe文件,这也是一个exe文件,也无法运行。后来查资料找到了解决方法。现在…

[转]后期-快速消除痘痘,完美修复MM肌肤

是面对美景&#xff0c;即使皮肤不好也得露个脸啊!那MM的面子问题怎么办呢?简单&#xff0c;咱就通过Photoshop后期处理来<?xml:namespace prefix o />给MM打造完美水嫩的肌肤!远景照片 简单还原MM容颜日常拍摄的照片&#xff0c;很多时候是远景的拍摄&#xff0c;人物…

[Android] Android MVP 架构下 最简单的 代码实现

Android MVP 架构下 最简单的 代码实现 首先看图&#xff1a; 上图是MVP&#xff0c;下图是MVC MVP和MVC的区别&#xff0c;在于以前的View层不仅要和model层交互&#xff0c;还要和controller层交互。而在mvp中&#xff0c;view层只和presenter层交互&#xff0c;而model层也…

java项目上有个红色感叹号(在project Explorer视图下)

启动项目时一直报错&#xff0c;检查也没问题&#xff0c;最后看到项目上有个红色感叹号&#xff0c;发现是jar包路径不对&#xff0c;把错误路径的jar包移除&#xff0c;然后再重新添加即可。转载于:https://www.cnblogs.com/sanhao/p/8059257.html

配置jdk环境 windows

java 配置环境 JAVA_HOME D:\Program Files\Java\jdk1.8.0_181 path %JAVA_HOME%\bin;%JAVA_HOME%\jre\bin; CLASSPATH .;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar

再谈Linux修改应用程序获得root权限

我之前写过一篇关于怎样就可以使你的应用程序获得root权限运行&#xff0c;那个对于一些测试程序或小工程的程序时比较实用&#xff0c;但如果你的工程文件多达几十个甚至上百&#xff0c;那么这种方法就不太适用了。在Ubuntu下面&#xff0c;我选择适用了codelite&#xff0c;…

JBPM4常见错误汇总

1.在tomcat6.0下布署错误 基于JBPM4的web项目jsp页面发布出错现象&#xff1a; javax.servlet.ServletException: java.lang.LinkageError: loader constraint violation: when resolving interfacemethod "javax.servlet.jsp.JspApplicationContext.getExpressionFacto…

Day 3 上午

内容提要&#xff1a; 动态规划 数位DP 树形DP 区间DP 动态规划 斐波那契数列f(0)0,f(1)1,......,f(n)f(n-1)f(n-2)0,1,1,2,3,5,8,13......他和动态规划有什么关系&#xff1f;首先&#xff0c;他有一个边界条件&#xff0c;就是f(0)0,f(1)1&#xff0c;相当于它不是从正无穷到…

SpringBoot------添加保存时自动编译插件

1.右键Java项目2.选择“Spring Tools”3.选择“Add Boot DevTools”4.每次使用Ctrl S键时就会自动编译了 实际上是在Pom.xml文件中添加了如下Java包 <dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring…

设置PLSQ 连接oracle数据库

1 、instantclient_12_1 的设置 配置文件内容 tnsnames.ora # tnsnames.ora Network Configuration File: C:\oracle\product\10.2.0\db_1\network\admin\tnsnames.ora # Generated by Oracle configuration tools.ORCL (DESCRIPTION (ADDRESS (PROTOCOL TCP)(HOST 221.…

《星辰变OL》估计很多人看过这书

瓜瓜小说论坛《星辰变OL》估计很多人看过这书&#xff0c;也估计很多人都不知道这游戏就快开始运行了。 本人2009-2010最期待的游戏了。 咩羊大大你千万注意下&#xff0c;这游戏一有封测&#xff0c;内测一类。一定要给我留个号。 下面看视频。 一定要给我留号啊~咩羊&#xf…

Ubuntu16.04 搭建nexus 私服 学习步骤以及安装maven和git

1、下载安装maven wget https://www-us.apache.org/dist/maven/maven-3/3.6.0/binaries/apache-maven-3.6.0-bin.tar.gz 1、创建maven仓库位置 2、修改setting.xml文件 添加东西如下 export M2_HOME/software/maven/apache-maven-3.6.0 export CLASSPATH$CLASSPATH:$M2_H…

Asp.net(C#)给图片加上水印效果(转自园上的Seven Eleven)

Asp.net(C#)给图片加上水印效果 private void Btn_Upload_Click(object sender, System.EventArgs e) { if(UploadFile.PostedFile.FileName.Trim()!"") { //上传文件 string extension Path.GetExten…

pip install失败报错解决方案

cmd pip install 某些包时报错 pip install Consider using the --user option or check the permissions. 只需要pip install --user package就可以解决转载于:https://www.cnblogs.com/webRobot/p/10799270.html

12.19冲刺总结

第二天冲刺&#xff1a; 昨天完成的任务&#xff1a; 主界面布局 遇到的问题&#xff1a; 登录界面弹窗 今日任务&#xff1a; 主界面编写转载于:https://www.cnblogs.com/mhj666/p/8349629.html

Win2003 防木马、权限设置、IIS服务器安全配置整理

原贴http://hi.baidu.com/zzxap/blog/item/18180000ff921516738b6564.html2009-02-10 10:45一、系统的安装   &#xff11;、按照Windows2003安装光盘的提示安装&#xff0c;默认情况下2003没有把IIS6.0安装在系统里面。&#xff12;、IIS6.0的安装开始菜单—>控制面板—&…

Js面试题(一)--js实现数组去重怎么实现?

方法1、创建一个新的临时数组来保存数组中已有的元素方法2、使用哈希表存储已有元素方法3、使用indexof判断数组元素第一次出现的位置是否为当前位置方法4、先排序再去重第一种方法和第三种方法都使用了indexof()&#xff0c;这个函数的执行机制也会遍历数组第二种使用了哈希表…

使用Maven 打包项目 生成XXX.tar.gz 文件

1、在项目中创建assembly文件夹 创建如图的一个assembly.xml文件 内容如下 <assemblyxmlns"http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"h…

整理了一下SQL Server里面可能经常会用到的日期格式转换方法

select getdate() 2004-09-12 11:06:08.177 举例如下: select CONVERT(varchar, getdate(), 120 ) 2004-09-12 11:06:08 select replace(replace(replace(CONVERT(varchar, getdate(), 120 ),-,), ,),:,) 20040912110608 select CONVERT(varchar(12) , getdate(), 111 ) 2004/…

java使用Cookie判断用户登录情况

1.判断是否登录 public boolean isLogin() {Set<Cookie> cookies this.browser.getCookies();String JSESSIONIDID "JSESSIONID";String sessionIdID "sessionId";String loginID "login";String JSESSIONIDIDValue "";Str…

桌面菜单背景修改

只能修改资源管理器里的右键菜单&#xff0c;即桌面、文件夹和各种文件上的右键菜单&#xff0c;其它如标题栏和任务栏的是没效果的&#xff0c;可惜了。修改其实只是注册了一个dll文件&#xff0c;然后修改这个dll里面的背景图片就可以了。1.首先下载ContextBG.dll。2.然后下载…

全浏览器兼容的DIV拖动效果

测试过下列浏览器 IE6、IE7、IE8、Chrome 5、FF 3.6、Opera 10、Safari 5 拖动效果的脚本网上都有&#xff0c;但网上找到的脚本有个问题 这是在网上随便找的代码(原出处不知道&#xff0c;很多类似代码的文章都没写出处&#xff0c;实在不知道到底出至哪里...) 代码 1 <!DO…

SpringSecurity使用 配置文件 和wen.xml 文件配置

目录 1、web.xml 文件配置 2、spring-security 普通 为使用自己创建的认证类 1、web.xml 文件配置 !-- 配置SpringSecurity的拦截器 --><context-param><param-name>contextConfigLocation</param-name><param-value>classpath:spring/spring-se…

Echo团队Alpha冲刺随笔 - 第九天

项目冲刺情况 进展 已经进入测试阶段&#xff0c;正在消除系统的bug问题 通过测试&#xff0c;找出了系统中存在的较多bug......体会 测试太重要了&#xff0c;很多原本以为没什么bug&#xff0c;一测就能找到好几个&#xff0c;而且改个bug真的可能新加n多个今日会议内容 黄少…

Windows下配置scrapy需要MVC的14.0版本(转载)

转载于--http://blog.csdn.net/MrWilliamVs/article/details/77130965 杨煜冬煜杨的博客&#xff0c;他的博客比较杂&#xff0c;Java、Python都有--http://blog.csdn.net/yyd19921214 环境依赖于 microsoft visual C 14.0, 仔细看报错后面还写着该C库的下载地址&#xff1b;(但…