JVM
Wang-Junchao
这个作者很懒,什么都没留下…
展开
-
Java虚拟机学习总结目录
Java虚拟机学习总结目录原创 2016-04-23 08:17:52 · 2472 阅读 · 0 评论 -
【014】【JVM中的两个Survivor区】
【015】【JVM中的两个Survivor区】在JVM GC的分代机制中,年轻代中有两个Survivor区,为了便于交换,需要保证其中一个为空,这个容易理解,但是为什么需要两个Survivor区,而且很多网上资料中说在特殊情况下,可以配置为多个,并没有说怎么配置,也没有说是什么特殊情况。和GC的copying算法相关,既然是拷贝,就得有地方做from,有地方做to。在原始的copying收集算法原创 2016-04-23 08:42:14 · 1483 阅读 · 0 评论 -
【013】【内存调优】
【013】【内存调优】JVM调优主要是针对内存管理方面的调优,包括控制各个代的大小,GC策略。由于GC开始垃圾回收时会挂起应用线程,严重影响了性能,调优的目是为了尽量降低GC所导致的应用线程暂停时间、 减少Full GC次数。代大小调优最关键参数:-Xms、 -Xmx 、-Xmn 、-XX:SurvivorRatio、-XX:MaxTenuringThreshold、-XX:PermSize、-XX原创 2016-04-23 08:39:05 · 1165 阅读 · 0 评论 -
【012】【Java晚期(运行期)优化】
【013】【Java晚期(运行期)优化】解释器与编译器解释器与编译器两者各有优势: 当程序需要迅速启动和执行的时候,解释器可以首先发挥作用,省去编译的时间,立即执行。在程序运行后,随着时间的推移,编译器逐渐发挥作用,把越来越多的代码编译成本地代码之后,可以获取更高的执行效率。当程序运行环境中内存资源限制较大(如部分嵌入式系统中),可以使用解释执行节约内存,反之可以使用编译执行来提升效率。同时,解释器原创 2016-04-23 08:26:50 · 1253 阅读 · 0 评论 -
【011】【JVM——虚拟机字节码执行引擎】
Java 虚拟机规范中制定了虚拟机字节码执行引擎的概念模型,这个概念模型成为各种版本虚机执行引擎的统一外观(Facade)。在不同的虚拟机实现里面,执行引擎在执行Java代码的时候可能会有解释执行(通过解释器执行)和编译执行(通过即时编译器产生本地代码执行)两种选择,也可能两者兼备,甚至还可能会包含几个不同级别的编译器执行引擎。原创 2015-04-10 08:35:20 · 1686 阅读 · 0 评论 -
【010】【JVM——类加载器】
对于任意一个类,都需要由加载它的类加载器和这个类本身一向确立其在Java 虚拟机中的唯一性,每一个类加载器,都拥有一个独立的类名称空间。比较两个类是否“相等”,只有在这两个类是由同一个类加载器加载的前提下才有意义,否则,即使这两个类来源于同一个Class 文件,被同一个虚拟机加载,只要加载它们的类加载器不同,那这两个类就必定不相等。这里所指的“相等”,包括代表类的Class 对象的equals() 方法、isAssignableFrom()方法、isInstance()方法的返回结果,也包括使用instan原创 2015-03-25 08:12:05 · 1963 阅读 · 0 评论 -
【009】【JVM——类加载机制】
类从被加载到虚拟机内存中开始,到卸载出内在为止,它的整个生命周期包括:加载、验证、准备、解析、初始化、使用和卸载 7 个阶段。其中验证、准备、解析3个部分统称为连接。加载、验证、准备、初始化和卸载这个阶段的顺序是确定的,类的加载过程必须按照这种顺序按部就班地开始,而解析阶段则不一定: 它在某些情况下可以在初始化阶段之后再开始。原创 2015-03-23 08:08:28 · 1988 阅读 · 0 评论 -
【008】【JVM——性能监控与故障处理工具】
HotSpot虚拟机提供了许多虚拟机运行时调试工具,方便开发人员在应用运行时对虚拟机和应用性能进行监控和优化原创 2015-03-21 07:28:47 · 1608 阅读 · 0 评论 -
【007】【JVM——内存分配与收回策略】
JVM的自动内存管理要自动化地解决两个问题:对象分配内存以及回收分配给对象的内存。回收内存前几篇已经讲了,现在说内存分配。对象的内存分配一般分配在堆内存中,也可能经过JIT 编译后被拆散为标量类型间接地在栈上分配。对象主要分配在新生代的Eden 区上,如果启动了本地线程分配缓存,将按线程优先在TLAB (本地线程分配缓存)上分配。少数情况下也可能会直接分配在老年代中,分配的规则不是固定的,与使用哪一种垃圾收集器组合,还与虚拟机中内存相关参数设置有关。原创 2015-03-20 08:20:39 · 1716 阅读 · 0 评论 -
【006】【JVM——垃圾收集器总结】
收集算法是内存回收的方法论,垃圾收集据是内存回收的具体实现。Java虚拟机规范中对垃圾收集器应该如何实现没有规定,不同的厂商、不同版本的虚拟机所提供的垃圾收集器可能会有很大差别,一般都会提供参数供用户根据自己的所用特点和要求组合出各个年代所使用的收集器。直到现在还没有最好的收集器,更加设有万能的收集器,只是对具体应用选择最合适的收集器。原创 2015-03-19 09:18:38 · 1805 阅读 · 0 评论 -
【005】【JVM——Hotspot算法实现存活对象判定和垃圾收集】
有了对象存活判定算法和垃圾收集的算法。HotSpot虚拟机在实现时充分考虑到算法执行的效率,保证虚拟机高效运行。原创 2015-03-18 15:01:35 · 1772 阅读 · 0 评论 -
【004】【JVM——垃圾收集算法】
垃圾收集算法的实现涉及大量的程序细节,而且各个平台的虚拟机操作内存的方法又各不相同,介绍几种垃圾收集算法的思想及其发展过程.原创 2015-03-18 14:10:51 · 1438 阅读 · 0 评论 -
【001】【Java虚拟机运行时内存结构】
Java虚拟机在执行Java程序的过程中,会把它所管理的内存划分为若干个不同的数据区,这些区域都有自己各自的用途,以及创建和销毁的时间,有的区域随着虚拟机进行的启动而存在,有些区域则依赖用户线程的启动和结束而建立和销毁。原创 2015-03-16 21:08:31 · 1813 阅读 · 0 评论 -
【003】【Java虚拟机——对象已死判定】
垃圾收集器在对堆进行回收前,首先要做的事情就是要确定这些对象之中哪些还“存活”着, 哪些已经“死去" (即不可能再被任何途径使用的对象)。原创 2015-03-18 14:24:07 · 1946 阅读 · 0 评论 -
java中的锁池和等待池
在java中,每个对象都有两个池,锁(monitor)池和等待池 wait() ,notifyAll(),notify() 三个方法都是Object类中的方法. 锁池:假设线程A已经拥有了某个对象(注意:不是类)的锁,而其它的线程想要调用这个对象的某个synchronized方法(或者synchronized块),由于这些线程在进入对象的synchronized方法之前必须先获得该对象的锁转载 2015-05-27 10:10:19 · 1323 阅读 · 0 评论 -
Java新一代垃圾回收器——ZGC
Java新一代垃圾回收器——ZGC在JDK 11当中,加入了实验性质的ZGC。它的回收耗时平均不到2毫秒。它是一款低停顿高并发的收集器。ZGC几乎在所有地方并发执行的,除了初始标记的是STW的。所以停顿时间几乎就耗费在初始标记上,这部分的实际是非常少的。那么其他阶段是怎么做到可以并发执行的呢?ZGC主要新增了两项技术,一个是着色指针Colored Pointer,另一个是读屏障Load B...原创 2018-11-20 08:35:10 · 2029 阅读 · 0 评论