文档章节

jvm学习笔记(二)

李大毛
 李大毛
发布于 2015/11/11 20:41
字数 734
阅读 4
收藏 0
点赞 0
评论 0

垃圾收集算法:

1)标记-清除算法:先标记再清除,缺点是会造成大量内存碎片。

2)复制算法:虚拟机内存分为等大的两部分,一部分快用完时将这一部分复制到另一块内存上,在把复制前存放的这一块内存清除。缺点是每次只能使用一般内存,代价略高。

     改进:新生代对象寿命较短,不需要按照1:1的比例划分内存,因此可以分为一块较大的eden空间和两块较小的survivor。每次只使用eden和一块survivor,回收时,把eden和survivor还存活的对象拷贝到剩下的survivor中,再清理。当还存活的对象大小大于一块survivor的容量时,有时需要借助其他内存(例如老年代)分配。

3)标记整理算法:老年代对象存活率比较高,采用同复制算法时间和空间成本较高,因此在老年代采用标记整理法。先标记再让所有存活的对象都向一端移动,然后直接清理掉端边界以外的内存。

几种垃圾收集器:

     serial:单核单线程,收集过程中必须停止所有线程停掉,适用于clent。新生代收集。

     parnew:serial的多线程版本。新生代收集。

     parallel scavenge:尽可能的提高吞吐量,吞吐量=用户代码时间/(用户代码时间+垃圾收集时间),更高效率利用cpu时间,适合在后台运算而不需要太多交互的任务。

    serial old收集器:单线程,标记整理法。配合parallel scavenge使用。

    parallel old:多线程,标记-整理算法。配合parallel scavenge使用。

    cms:最短回收停顿时间。初始标记--》并发标记--》重新标记--》并发清除

                    缺点:1 、cpu资源好用大,影响吞吐量,默认回收线程数:(cpu数量+3)/4,核心数少时,占用cpu资源多。

                              2、无法处理浮动垃圾,因为并发清除阶段还会有新的垃圾出现。

                              3、标记清楚算法产生大量空间碎片,有事需要给大对象触发一次full gc,并在full gc之后进行碎片整理。                                    可调节。

     g1:标记——整理算法,精确控制停顿。主要措施是极力避免全区域垃圾收集,将整个java堆分为多个区域进行监控。


对象分配与回收策略:

     大多数情况下,对象在新生代Eden区中分配,eden没有足够空间时,发起一次minor gc。

    大对象直接进入老年代。应当尽量避免朝生夕死的大对象。

    长期存活的对象将进入老年代。

    空间分配担保。

名词解释:minor gc:新生代回收。

                 full gc:整个堆空间回收。








© 著作权归作者所有

共有 人打赏支持
李大毛
粉丝 0
博文 9
码字总数 5410
作品 0
杭州
JavaWeb07-HTML篇笔记(二)

1.1 案例一:使用JDBC完成CRUD的操作:1.1.1 需求: 对分类管理使用JDBC进行CRUD的操作. 1.1.2 分析:1.1.2.1 技术分析: 【JDBC的概述】 Ø JDBC:Java DataBase Connectivity Java数据库的连...

我是小谷粒 ⋅ 05/16 ⋅ 0

Java研发大学毕业后为何找不到理想的工作

现在大学生在大学学习Java技术,毕业后直接工作,我想在大家心里这只是再平常不过的事情了,可是为啥刚一毕业的Java应聘工程师会遭到各个研发企业的拒绝,这是刚毕业的每个大学生心中的疑虑,...

我爱编程学习 ⋅ 06/07 ⋅ 0

Java学习---Java简单认识

前言 小编在学习Java方面的基础知识,发现里面有很多是结合之前的语言的特点发展过来的,不同的地方是,Java有它自己的发展和特点。下面小编先简单地做一下总结,结合看过的1-2章的J2SE视频,...

m18633778874 ⋅ 04/01 ⋅ 0

JAVA工程师的工资真的很高吗?

Java工程师是个高薪的行业,让不少人羡慕不已,有很多人因为Java的高薪而转行。这也是近几年Java如此火热的原因之一。也正是因为Java如此之多,所以不少想要学习Java语言的人不禁产生一个疑问...

deng707273 ⋅ 04/09 ⋅ 0

Java多线程学习(五)线程间通信知识点补充

系列文章传送门: Java多线程学习(一)Java多线程入门 Java多线程学习(二)synchronized关键字(1) java多线程学习(二)synchronized关键字(2) Java多线程学习(三)volatile关键字 Ja...

一只蜗牛呀 ⋅ 04/16 ⋅ 0

jdk的下载与安装(windows环境下) - 图解

一、JDK的下载(当前演示版本为jdk 1.8.0_171) 1.下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 2.同意相关协议,再下载对应版本的jdk(w...

qq_34256296 ⋅ 05/25 ⋅ 0

mybatis系统学习(二)——使用基础mybatis代替原始jdbc

mybatis系统学习(二)——使用基础mybatis代替原始jdbc 前言 这一篇笔记的内容应当是建立在上一篇的基础之上,不论是使用的数据表,还是对应的实体类,都在上一篇有过说明。 有兴趣的或者对...

推荐码发放 ⋅ 05/03 ⋅ 0

Java多线程学习(二)synchronized关键字(2)

系列文章传送门: Java多线程学习(一)Java多线程入门 Java多线程学习(二)synchronized关键字(1) java多线程学习(二)synchronized关键字(2) Java多线程学习(三)volatile关键字 Ja...

一只蜗牛呀 ⋅ 04/16 ⋅ 0

深入理解JVM学习笔记(一、总览)

1、JVM历史 2、JVM内存结构 3、JVM垃圾回收机制 4、JVM性能监控工具 5、JVM性能调优案例时间 6、JVM类文件结构 7、JVM类加载机制 8、JVM字节码执行引擎 9、JVM虚拟机编译及其运行时优化 10、...

jintaohahahaha ⋅ 05/28 ⋅ 0

Java程序员必读书单,家族又添新成员

点击关注异步图书,置顶公众号 每天与你分享IT好书 技术干货 职场知识 参与文末话题讨论,每日赠送异步图书。 ——异步小编 有些革命出其不意地吸引了全世界的眼球。Twitter、Linux操作系统和...

异步社区 ⋅ 05/09 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Java NIO之字符集

1 字符集和编解码的概念 首先,解释一下什么是字符集。顾名思义,就是字符的集合。它的初衷是把现实世界的符号映射为计算机可以理解的字节。比如我创造一个字符集,叫做sex字符集,就包含两个...

士别三日 ⋅ 27分钟前 ⋅ 0

Spring Bean基础

1、Bean之间引用 <!--如果Bean配置在同一个XML文件中,使用local引用--><ref bean="someBean"/><!--如果Bean配置在不同的XML文件中,使用ref引用--><ref local="someBean"/> 其实两种......

霍淇滨 ⋅ 32分钟前 ⋅ 0

05、基于Consul+Upsync+Nginx实现动态负载均衡

1、Consul环境搭建 下载consul_0.7.5_linux_amd64.zip到/usr/local/src目录 cd /usr/local/srcwget https://releases.hashicorp.com/consul/0.7.5/consul_0.7.5_linux_amd64.zip 解压consu......

北岩 ⋅ 35分钟前 ⋅ 0

Webpack 4 api 了解与使用

webpack 最近升级到了 v4.5+版 01 官方不再支持 node4 以下版本 官方不再支持 node4 以下版本官方不再支持 node4 以下的版本,所以如果你的node版本太低,先开始升级node吧!话说node10 ...

NDweb ⋅ 45分钟前 ⋅ 0

使用nodeJs安装Vue-cli

Vue脚手架就是一个Vue框架开发环境 脚手架的意思是帮你快速开始一个vue的项目,也就是给你一套vue的结构,包含基础的依赖库,只需要 npm install就可以安装,让我们不需要为了编辑或者一些其...

木筏笔歆 ⋅ 今天 ⋅ 0

【微信小程序开发实战】0x00.开发前准备工作

写在开始 本人资深后端码农一枚,近期项目需求,接触到了微信小程序,将学习过程整理成文分享给小伙伴们,由于是边学边整理难免有表述不对的地方,望大家及时指正,感谢。 本人微信号: dream...

dreamans ⋅ 今天 ⋅ 0

linux redis的安装和php7下安装redis扩展

安装redis服务器 (1)下载安装包: $ wget http://download.redis.io/releases/redis-2.8.17.tar.gz (2)编译程序: $ tar xzf redis-2.8.17.tar.gz $ cd redis-2.8.17 $ make $ cd src &&......

concat ⋅ 今天 ⋅ 0

Guava EventBus源码解析

一、EventBus使用场景示例 Guava EventBus是事件发布/订阅框架,采用观察者模式,通过解耦发布者和订阅者简化事件(消息)的传递。这有点像简化版的MQ,除去了Broker,由EventBus托管了订阅&...

SaintTinyBoy ⋅ 今天 ⋅ 0

http怎么做自动跳转https

Apache 版本 如果需要整站跳转,则在网站的配置文件的<Directory>标签内,键入以下内容: RewriteEngine on RewriteCond %{SERVER_PORT} !^443$ RewriteRule ^(.*)?$ https://%{SERVER_NAME......

Helios51 ⋅ 今天 ⋅ 0

Python爬虫,抓取淘宝商品评论内容

作为一个资深吃货,网购各种零食是很频繁的,但是能否在浩瀚的商品库中找到合适的东西,就只能参考评论了!今天给大家分享用python做个抓取淘宝商品评论的小爬虫! 思路 我们就拿“德州扒鸡”...

python玩家 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部