JVM技术周报第1期
JVM技术周报 · 第1期
JVM技术每周分享整理了JVM技术交流群每周讨论的内容,由群内成员整理归纳而成。如果你有兴趣入群讨论,请关注「Java技术精选」公众号,通过右下角菜单「入群交流」加我好友,获取入群详情。
SafePoint
safePoint是代码的特殊位置.发生GC时,jvm要判断引用关系,引用关系存在OopMap中,不可能每跑一行代码就生成一个OopMap,这会消耗大量的CPU执行时间和内存,所以jvm会在一些特殊的位置生成OopMap,这些位置就是SafePoint.GC时,jvm发出线程中断请求,线程只有跑到SafePoint才会中断,所以SafePoint不能太少.
线程中断主要有两个方式:抢先式中断 线程收到中断请求时,判断在不在safepoint,不在恢复run到safepoint(很少使用) 主动式中断 线程run的时候轮询中断标志,中断标志为真则处于safepoint.
SafeRegion
当线程正在run的时候,可以响应jvm的中断请求,跑到SafePoint中断.但是线程处于wait,blocked,sleep状态时,是无法跑到SafePoint中断的.同时这些线程不处于run的状态,引用关系不会发生变化.于是jvm规定了SafeRegion,无论何时发起GC,处于SafeRegion的线程都是安全的可以直接进行GC的.线程离开SafeRegion会检查系统是否已经完成了gc,完成可以离开去run,未完成继续等待可以离开的信号.
CMS内存碎片
CMS (Concurrent Mark Sweep)是一种以获取最短回收停顿时间为目标的Tenured generation收集器.CMS采取的是标记清清除算法.该算法是一定会产生内存碎片的,这是无法避免的.致过多的内存碎片会导致给大对象分配内存时,没有足够大的连续内存而出发full GC.
于是CMS提供了两个参数去解决这个问题:
-XX:UseCMSCompactAtFullCollection默认开启,fullGC时将老年代缩压缩.
-XX:CMSFullGCsBeforeCompaction 则是代表多少次FGC后对老年代做压缩操作,默认值为0,代表每次都压缩, 把对象移动到内存的最左边,可能会影响性能,但是可以消除碎片. 即牺牲一定性能在每次GC之后,将存活的对象整理到一块,消除内存碎片.
parNew+CMS组合 eden的YGC辨别对象的状态
问题中有个缺陷,当触发MinorGC时不仅仅是eden区,还会扫描from Survivor 区的内存.
ParNew采取的算法是复制清除算法,但是判断对象是否存活仍是可达性算法,采取对对象进行标记判断状态.
常量池
常量池主要分为两个:
静态常量池: *.class的常量池,保存了一些类的描述信息(符号引用-->1.类和方法的全限定名 2.字段的名称和描述符 3.方法的名称和描述符),以及一些字面量(1.文本字符串 2.八种基本类型的值 3.被声明为final的常量等)动态常量池: jvm在加载某个类的时候,必须经过装载、连接、初始化,而连接又包括验证、准备、解析三个阶段。而当类加载到内存中后,jvm就会将class常量池中的内容存放到运行时常量池中,由此可知,运行时常量池也是每个类都有一个.
全局字符串常量池:本质是一个HashSet,这是一个纯运行时的结构,而且是惰性维护的。注意它只存储String对象的引用,而不存储String对象的内容,根据这个引用可以得到具体的String对象。这个常量池在每个HotSpot VM的实例只有一份,被所有的类共享, JDK6 之前是存放在方法区,JDK7被移到了堆区中.(这里有很多有意思的点课自行百度)
JVM技术周报第1期的更多相关文章
- JVM技术周报第2期
JVM技术周报第2期 JVM技术周报分享JVM技术交流群的讨论内容,由群内成员整理归纳而成.如果你有兴趣入群讨论,请关注「Java技术精选」公众号,通过右下角菜单「入群交流」加我好友,获取入群详情. ...
- iOS移动开发周报-第24期
iOS移动开发周报-第24期 [摘要]:本期iOS移动开发周报带来如下内容:苹果更新了iTunes Connect的设计.UIKit Dynamics 教程:抛掷 Views.iOS APP 架构漫谈 ...
- iOS移动开发周报-第19期
iOS移动开发周报-第19期 前言 欢迎国内的iOS同行或技术作者向我提交周报线索,线索可以是新闻.教程.开发工具或开源项目,将相关文章的简介和链接在微博上发布并 @唐巧_boy 即可. [摘要]:本 ...
- iOS移动开发周报-第17期
lhq iOS移动开发周报-第17期 前言 欢迎国内的iOS同行或技术作者向我提交周报线索,线索可以是新闻.教程.开发工具或开源项目,将相关文章的简介和链接在微博上发布并 @唐巧_boy 即可. [摘 ...
- iOS移动开发周报-第25期
iOS移动开发周报-第25期 [摘要]:本期iOS移动开发周报带来如下内容:苹果发布 iPhone6 和 Apple Watch.Swift 1.0 GM发布.Xcode 6支持PDF Vector作 ...
- iOS移动开发周报-第23期
iOS移动开发周报-第23期 [摘要]:本期iOS移动开发周报带来如下内容:苹果发出9月9日发布会邀请函,AFNetworking2.0源码解析,objc与鸭子对象,Protecting iOS Ap ...
- iOS移动开发周报-第22期
iOS移动开发周报-第22期 [摘要]:本期iOS移动开发周报带来如下内容:苹果股价创新高,iOS8自动调整UITableView布局,Swift学习心得等. 新闻 <苹果股价创新高 市值全球第 ...
- iOS移动开发周报-第21期
iOS移动开发周报-第21期 [摘要]:本期iOS移动开发周报带来如下内容:苹果iCloud中国数据转存中国电信,Swift Operators,100 个 Swift 必备 tips,FLEXLoa ...
- 极客技术专题【008期】:CSS3核心技术:选择器
日期:2013-8-19 来源:GBin1.com 技术专题介绍 技术专题:CSS3核心技术:选择器 专题演讲稿:CSS3选择器 分享人:知名前端技术博客 - w3cplus.com 博主 - 大漠 ...
随机推荐
- 【SPL标准库专题(2)】 Iterator
Iterator界面 本段内容来自阮一峰老师再加自己的部分注解 SPL规定,所有部署了Iterator界面的class,都可以用在foreach Loop中.Iterator界面中包含5个必须部署的方 ...
- 从零开始学习VoltDB
1.什么是VoltDB? 是一个优化吞吐率的高性能集群开源SQLRDBMS(Database Management System),它是一个内存关系型数据库,既获得了nosql的良好可扩展性,高吞吐量 ...
- (笔记)MySQL 之 Metadata Locking 研究(5.5版本)
MySQL5.5 中引入了 metadata lock. 顾名思义,metadata lock 不是为了保护表中的数据的,而是保护 database objects(元数据)的.包括表结构.sch ...
- It’s Time To Think Linq
动机 如果你有以下迷惑,你应该看看这篇文章 你想办法找到所有与GameObject.FindGameObjectsWithTag的变换(),而不是游戏本身的对象 你需要操作,排序和更改列表和数组的类型 ...
- vcenter server appliance(vcsa) 配置IP的方法
方法一: vcenter server appliance 5.1 及以后版本包括5.5,在安装完毕后,console界面是没有网络配置项的,如果需要进行IP配置,可以login后,输入命令yast( ...
- Swift 并行编程现状和展望 - async/await 和参与者模式
这篇文章不是针对当前版本 Swift 3 的,而是对预计于 2018 年发布的 Swift 5 的一些特性的猜想.如果两年后我还记得这篇文章,可能会回来更新一波.在此之前,请当作一篇对现代语言并行编程 ...
- C#演化过程--各个版本新增加特性
- BZOJ4552:[TJOI2016&HEOI2016]排序(线段树,二分)
Description 在2016年,佳媛姐姐喜欢上了数字序列.因而他经常研究关于序列的一些奇奇怪怪的问题,现在他在研究一个难题,需要你来帮助他. 这个难题是这样子的:给出一个1到n的全排列,现在对这 ...
- Hadoop安装教程【转】
原贴:http://www.powerxing.com/install-hadoop/ 当开始着手实践 Hadoop 时,安装 Hadoop 往往会成为新手的一道门槛.尽管安装其实很简单,书上有写到, ...
- Odoo作为App后端时如何调试App
转载请注明原文地址:https://www.cnblogs.com/cnodoo/p/9307340.html 一:Odoo可以作为app后台+后台管理系统使用 Odoo作为一个可供二次开发的框架, ...