
JVM
一点一滴g
这个作者很懒,什么都没留下…
展开
-
JVM---ZGC收集器
ZGC(“Z”并非什么专业名词的缩写,这款收集器的名字就叫作Z Garbage Collector)是一款在JDK 11中新加入的具有实验性质的低延迟垃圾收集器。ZGC收集器是一款基于Region内存布局的,(暂时) 不设分代的,使用了读屏障、染色指针和内存多重映射等技术来实现可并发的标记-整理算法的,以低延迟为首要目标的一款垃圾收集器。Z G C采用基于Region的堆内存布局,但与它们不同的是 , ZGC的Regio具 有 动 态 性 — —动态创建和销毁 ,以及动态的区域容量大小。 在x64硬件平台原创 2020-11-09 14:26:39 · 420 阅读 · 0 评论 -
JVM------HotHotSpot的算法实现
根结点枚举迄今为止,所有收集器在根节点枚举这一步骤时都是必须暂停用户线程的,也就有“STW”的困扰。现在可达性分析算法耗时最长的查找引用链的过程已经可以做到与用户线程一起并发,但根节点枚举始终还 是必须在一个能保障一致性的快照中才得以进行——这里“一致性”的意思是整个枚举期间执行子系统 看起来就像被冻结在某个时间点上,不会出现分析过程中,根节点集合的对象引用关系还在不断变化的情况,若这点不能满足的话,分析结果准确性也就无法保证,这也是垃圾回收过程必须停顿所有线程的原因。目前主流Java虚拟机使用的都是准原创 2020-11-05 16:46:07 · 353 阅读 · 0 评论 -
深入理解JVM虚拟机6:JVM常用参数以及调优实践
JVM常用参数选项配置参数功能-Xms初始堆大小。如:-Xms256m-Xmx最大堆大小。如:-Xmx512m-Xmn新生代大小。通常为 Xmx 的 1/3 或 1/4。新生代 = Eden + 2 个 Survivor 空间。实际可用空间为 = Eden + 1 个 Survivor,即 90%-XssJDK1.5+ 每个线程堆栈大小为 1M,一般...转载 2019-04-29 13:27:38 · 327 阅读 · 0 评论 -
JVM之Java内存模型
1.概述多任务和高并发是衡量一台计算机处理器的能力重要指标之一。一般衡量一个服务器性能的高低好坏,使用每秒事务处理数(Transactions Per Second,TPS)这个指标比较能说明问题,它代表着一秒内服务器平均能响应的请求数,而TPS值与程序的并发能力有着非常密切的关系。在讨论Java内存模型和线程之前,先简单介绍一下硬件的效率与一致性。2.硬件的效率与一致性由于计算机的存储设备...原创 2018-10-20 18:10:21 · 189 阅读 · 0 评论 -
浅谈java内存
运行时数据区首先我们介绍运行时数据区的内存结构,主要分为方法区、Java堆、虚拟机栈、本地方法栈、程序计数器。其中方法区和Java堆一样,是各个线程共享的内存区域,而虚拟机栈、本地方法栈、程序计数器是线程私有的内存区。如下图所示:程序计数器程序计数器是一块较小的内存空间,它可以看做是当前线程所执行的字节码的行号指示器。因为java虚拟机多线程是通过轮流切换并分配处理器执行时间的方式实现,...原创 2018-10-19 18:31:37 · 207 阅读 · 0 评论 -
深入了解JVM虚拟机5:Java的编译期优化与运行期优化
java编译期优化java语言的编译期其实是一段不确定的操作过程,因为它可以分为三类编译过程:1.前端编译:把.java文件转变为.class文件2.后端编译:把字节码转变为机器码3.静态提前编译:直接把*.java文件编译成本地机器代码从JDK1.3开始,虚拟机设计团队就把对性能的优化集中到了后端的即时编译中,这样可以让那些不是由Javac产生的Class文件(如JRuby、Groov...转载 2019-04-28 18:54:39 · 126 阅读 · 0 评论 -
深入理解JVM虚拟机4:JNDI,OSGI,Tomcat类加载器实现
打破双亲委派模型JNDIJNDI 的理解JNDI是 Java 命名与文件夹接口(Java Naming and Directory Interface),在J2EE规范中是重要的规范之中的一个,不少专家觉得,没有透彻理解JNDI的意义和作用,就没有真正掌握J2EE特别是EJB的知识。那么,JNDI究竟起什么作用?//带着问题看文章是最有效的要了解JNDI的作用,我们能够从“假设不用JND...转载 2019-04-28 17:01:00 · 210 阅读 · 0 评论 -
深入理解JVM虚拟机3:JVM类加载机制
一.类加载机制JVM类加载分为5个过程:加载,验证,准备,解析,初始化,使用,卸载,如下图所示:1.1 加载加载主要是将.class文件(并不一定是.class。可以是ZIP包,网络中获取)中的二进制字节流读入到JVM中。在加载阶段,JVM需要完成3件事:1)通过类的全限定名获取该类的二进制字节流;2)将字节流所代表的静态存储结构转化为方法区的运行时数据结构;3)在内存中生成一个该...原创 2018-11-12 15:26:06 · 382 阅读 · 1 评论 -
常见的垃圾回收器---G1
G1 总览首先是内存划分上,之前介绍的分代收集器将整个堆分为年轻代、老年代和永久代,每个代的空间是确定的。而 G1 将整个堆划分为一个个大小相等的小块(每一块称为一个 region),每一块的内存是连续的。和分代算法一样,G1 中每个块也会充当 Eden、Survivor、Old 三种角色,但是它们不是固定的,这使得内存使用更加地灵活。执行垃圾收集时,和 CMS 一样,G1 收集线程在标记...原创 2019-04-27 13:11:39 · 177 阅读 · 0 评论 -
常见的垃圾回收器--------CMS
1. 什么是CMS?CMS是一款并发、使用标记-清除算法的、针对老年代进行回收的GC。它将垃圾回收中的绝大部分工作与应用程序的线程一起并发执行,以期能最小化暂停时间. 通常多并发低暂停收集器收集器不复制或也不压缩存活的对象. 垃圾回收不移动存活的对象, 如果产生内存碎片问题,就会分配/占用更大的堆内存空间。适用场景:GC过程短暂停,适合对时延要求较高的服务,用户线程不允许长时间的停顿。注...原创 2019-04-04 15:54:32 · 438 阅读 · 0 评论 -
深入理解JVM虚拟机2:JVM垃圾回收基本原理和算法
Java HotSpot 虚拟机每种JVM实现可能采用不同的方法实现垃圾回收机制。在收购SUN之前,Oracle使用的是JRockit JVM,收购之后使用HotSpot JVM。目前Oracle拥有两种JVM实现并且一段时间后两个JVM实现会合二为一。HotSpot JVM是目前Oracle SE平台标准核心组件的一部分。所以我的研究也是基本HotSpot虚拟机的垃圾回收机制。众所周知,在...原创 2019-04-27 12:45:05 · 166 阅读 · 0 评论 -
深入理解JVM虚拟机1:JVM内存的结构与永久代的消失
内存划分模型JVM内存结构主要有三大块:堆内存、方法区和栈。堆内存是JVM中最大的一块由年轻代和老年代组成,而年轻代内存又被分成三部分,Eden空间、From Survivor空间、To Survivor空间,默认情况下年轻代按照8:1:1的比例来分配;方法区存储类信息、常量、静态变量等数据,是线程共享的区域,为与Java堆区分,方法区还有一个别名Non-Heap(非堆);栈又分为java虚...转载 2019-04-26 19:58:25 · 126 阅读 · 0 评论