
Java--JVM
文章平均质量分 82
yjc0403
这个作者很懒,什么都没留下…
展开
-
JVM内存区域划分Eden Space、Survivor Space、Tenured Gen,Perm Gen解释
jvm区域总体分两类,heap区和非heap区。heap区又分:Eden Space(伊甸园)、Survivor Space(幸存者区)、Tenured Gen(老年代-养老区)。 非heap区又分:Code Cache(代码缓存区)、Perm Gen(永久代)、Jvm Stack(java虚拟机栈)、Local Method Statck(本地方法栈)。HotSpot虚拟机GC算法采用分...原创 2015-05-30 23:28:30 · 98 阅读 · 0 评论 -
JVM之G1垃圾回收器
JVM之G1垃圾回收器 G1垃圾收集器采用的是区域化、分布式的垃圾回收器。堆被划分成 许多个连续的区域(region)。每个区域大小相等,在1M~32M之间。JVM最多支持2000个区域,可推算G1能支持的最大内存为2000*32M=62.5G。区域(region)的大小在JVM初始化的时候决定,也可以用-XX:G1HeapReginSize设置。 虽然在G1收集器里面将整个内...原创 2017-01-22 16:37:50 · 189 阅读 · 0 评论 -
JVM之监控JVM
JVM之监控JVM JVM常用的调忧工具 Jconsole : jdk自带,功能简单,但是可以在系统有一定负荷的情况下使用。对垃圾回收算法有很详细的跟踪。JProfiler:商业软件,需要付费。功能强大。VisualVM:JDK自带,功能强大,与JProfiler类似。推荐。 监控工具主要分析下面内容 堆监控线程监控热点分析...原创 2017-01-23 11:19:56 · 234 阅读 · 0 评论 -
JVM之优化(概述)
JVM之优化(概述) 现代JVM是一个具有灵活适应各种应用能力的软件,尽管很多应用能够在JVM的默认配置下运行良好,但是有些应用还是需要优化JVM配置以达到其性能要求。由于各种各样的应用能够运行在现在JVM上面,所以大量的JVM选项可以配置来提升应用的性能。不幸的是,对一个应用而言优化得很好的JVM配置,对应另外的应用不一定适合。所以,真正理解怎样优化JVM配置是非常有必...原创 2017-01-23 17:51:27 · 162 阅读 · 0 评论 -
JVM之优化(部署模型和Runtime)
JVM之优化(部署模型和Runtime) 选择JVM部署模型 JVM部署模型的选择总体来说就是决定应用是部署在单个JVM实例还是多个JVM实例上(这里简单举例说明一下JVM实例,比如:我们常用eclipse开发,启动一个eclipse就是启动了一个JVM实例,然后在JVM中运行一个main程序,又会启动一个JVM实例,两个JVM实例是隔离开的)。哪一个是最适合你的应...原创 2017-01-23 18:50:01 · 198 阅读 · 0 评论 -
JVM之优化(GC优化基础)
JVM之优化(GC优化基础) 本节主要描述关于垃圾回收器性能的三个指标,三个关于垃圾回收器优化的基本原则,以及优化HotSpot VM的垃圾回收器的信息收集,在这些指标中权衡以及信息的收集是非常重要的。 性能指标 吞吐量:衡量垃圾回收器运行在性能峰值的时候不需要关心垃圾回收器暂停的时间或者需要占用内存的能力。延迟:衡量垃圾回收器最小化甚至消灭...原创 2017-02-06 15:32:17 · 131 阅读 · 0 评论 -
JVM之决定堆大小以及内存占用
JVM之决定堆大小以及内存占用 首先需要判断出应用存活的数据的大小,存活数据的大小是决定配置应用需要的Java堆大小的重要条件,也能够决定是否需要重新审视一下应用的内存需求或者修改应用程序以满足内存需求。 注意:存活数据是指,应用处于稳定运行状态下,在Java堆里面长期存活的对象。换一句话说,就是应用在稳定运行的状态下,Full GC之后,Java堆的所占的空间。...原创 2017-02-07 16:32:28 · 601 阅读 · 0 评论 -
JVM之优化延迟或响应时间
JVM之优化延迟或响应时间 优化标准 在优化延迟的时候,其实就是要调整堆大小,年轻代大小,让GC的时间和频率达到要求。下面是几个优化时需要参考的标准: Minor GC的时间Minor GC的频率Full GC的时间Full GC的频率 优化年轻代大小 当测试垃圾回收数据的时候,发现MinorGC的时间太长了,正确的做...原创 2017-02-08 15:42:30 · 552 阅读 · 0 评论 -
JVM之优化延迟或响应时间(CMS垃圾回收器)
JVM之优化延迟或响应时间(CMS垃圾回收器) CMS有几个注意点 对象从young代转移到old代的转移率CMS重新分配内存的概率CMS回收对象时候产生的old代的分隔,这个会在可获得的对象中间产生一些空隙,从而导致了分隔空间 CMS的缺点 从年轻代转移到老年代会更慢,所以减少从年轻代到老年代的转移内存碎片当从吞吐量垃圾回收器(Th...原创 2017-02-09 15:42:19 · 476 阅读 · 0 评论 -
JVM之优化吞吐量
JVM之优化吞吐量 对年轻代进行优化 优化吞吐量的目的其实是尽量少的Full GC ,或者尽量避免Full GC,有以下方法可以尽量减少Full GC: 增大Eden:你可以让eden空间更大,可以减少MinorGC的次数。我知道当对象的任期或者岁数达到一定值的时候就会移动到old代,而这个任期就是对象经历MinorGC的次数,MinorGC的次数越少,对象任期增长越慢...原创 2017-02-09 18:02:59 · 991 阅读 · 0 评论 -
JVM之其他情况
JVM之其他情况 JVM优化时遇到的场景 场景一 一些应用分配了一些少量的非常大的长时间存活的对象。这样的场景需要需要young代的空间比old代更大。 场景二 一些应用会经历很少的对象转移。这样的场景可能需要old代的空间远远大于存活对象的大小,由于old的占用量增长率很小。 场景三 一些应用有小延迟需求,...原创 2017-02-13 18:06:09 · 138 阅读 · 0 评论 -
JVM之CMS垃圾回收器
JVM之CMS垃圾回收器 CMS(Concurrent Mark-Sweep)是以牺牲吞吐量为代价来获得最短回收停顿时间的垃圾回收器。对于要求服务器响应速度的应用上,这种垃圾回收器非常适合。在启动JVM参数加上-XX:+UseConcMarkSweepGC ,这个参数表示对于老年代的回收采用CMS。 CMS采用的基础算法是:标记—清除。 CMS垃圾回收的过程...原创 2017-01-20 16:44:14 · 453 阅读 · 0 评论 -
JVM之垃圾回收器
JVM之垃圾回收器 垃圾回收器总共分四大类 串行垃圾回收器(Serial Garbage Collector)Serial(年轻代):复制算法,单线程Serial Old(老年代):标记 - 整理算法,单线程 并行垃圾回收器(Parallel Garbage Collector)parallel(年轻代):复制算法,多线程Parallel Old(...原创 2017-01-20 14:05:25 · 125 阅读 · 0 评论 -
JVM之结构
JVM之结构 JVM的运行流程 JVM的结构图如下: 类加载器 类加载器子系统负责加载编译好的.class字节码文件,并装入内存,使JVM可以实例化或以其它方式使用加载后的类。 程序计数器 记录当前线程执行到哪一行,每个线程有一个程序计数器和一个虚拟机栈;如果执行本地方法,程序计数器为空,这部分我们不需要...原创 2017-01-15 21:16:47 · 116 阅读 · 0 评论 -
JVM之类加载器
JVM之类加载器 类加载器种类 启动类加载器(Bootstrap ClassLoader):JVM启动的类加载器,JVM就像一个应用程序,启动时就要靠这个类加载器,相当于JVM的启动器。负责加载$JAVA_HOME/jre/lib/下核心API或者-Xbootclasspath选项指定的jar包,如java.lang.*扩展加载器(Extension Cla...原创 2017-01-15 22:58:19 · 103 阅读 · 0 评论 -
JVM之虚拟机栈
JVM之虚拟机栈 每个线程有一个私有栈,随着线程的创建而创建。栈里面有栈桢,每个方法创建一个栈桢,方法的调用是入栈的过程,方法调用完返回就是出栈的过程。栈的大小可以动态扩展,当栈的调用深度大于JVM所允许的范围,会抛出StackOverflowError。 java栈的组成元素-------栈桢 栈帧由三部分组成:局部变量区、操作...原创 2017-01-16 15:46:22 · 95 阅读 · 0 评论 -
JVM之方法区
JVM之方法区 方法区放什么 对于每一个加载的类型,会在方法区中保存以下信息: 类及其父类的全限定名(类的全路径名)(java.lang.Object没有父类)类的类型(Class or Interface)访问修饰符(public, abstract, final)实现的接口的全限定名的列表常量池字段信息方法信息静态变量ClassLo...原创 2017-01-16 20:23:37 · 113 阅读 · 0 评论 -
JVM之堆
JVM之堆 堆只要放实例对象和数组,当堆内存需要占用的空间大于我们设置的只,就会出OutOfMemoryError。 堆内存结构 JVM堆(Heap)= 新生代 + 旧生代新生代(Young)= Eden区 + From Survivor区 + To Survivor区 堆内存的默认比例: 新生代 ( Young ) 与老年代 ( ...原创 2017-01-16 20:52:08 · 101 阅读 · 0 评论 -
JVM之堆与栈的比较
JVM之堆与栈的比较 数据类型 Java虚拟机中,数据类型可以分为两类:基本类型和引用类型。基本类型的变量保存原始值,即:他代表的值就是数值本身;而引用类型的变量保存引用值。“引用值”代表了某个对象的引用,而不是对象本身,对象本身存放在这个引用值所表示的地址的位置。 基本类型包括:byte,short,int,long,char,float,double,...原创 2017-01-17 19:14:50 · 105 阅读 · 0 评论 -
JVM之对象的了解
JVM之对象的了解 对象的大小 在Java中,一个空Object对象的大小是8byte,这个大小只是保存堆中一个没有任何属性的对象的大小。 Object ob = new Object(); 这样在程序中完成了一个Java对象的生命,但是它所占的空间为:4byte+8byte。4byte是上面部分所说的Java栈中保存引用的所需要的空间。而那8byte则是Ja...原创 2017-01-18 20:46:37 · 98 阅读 · 0 评论 -
JVM之垃圾回收过程
JVM之垃圾回收过程 为什么要垃圾回收 前面谈到过,JVM中的设计是操作和数据分离,临时变量和操作运算在栈中运行,对象和数组存储在堆中,当栈运行完就会释放消耗的内存,但是堆不知道什么时候运行完,所以对象就会一直堆在那里越堆越多,直至内存被耗尽,幸好Java提供垃圾回收机制,将程序员从内存释放中解放出来,集中精力在业务开发上。 启动垃圾回收 ...原创 2017-01-18 22:01:44 · 179 阅读 · 0 评论 -
JVM之垃圾回收算法
JVM之垃圾回收算法 基本垃圾回收算法 1. 引用计数算法(Reference Counting) 比较古老的回收算法。原理是此对象有一个引用,即增加一个计数,删除一个引用则减少一个计数。垃圾回收时,只用收集计数为0的对象。 优点:找可回收对象时很容易缺点:无法处理循环引用的问题 2. 标记-清除(Mark-Sweep) 此算法执行...原创 2017-01-19 16:46:42 · 116 阅读 · 0 评论 -
JVM之垃圾回收遇到的问题
JVM之垃圾回收遇到的问题 怎么判断对象可以被回收 根搜索算法 在主流的商用程序语言中(java和c#),都是使用根搜索算法(GC Roots Tracing)判断对象是否存活的。这个算法的基本思路就是通过一系列的名为“GC Roots”的对象作为起始点,从这些节点开始向下搜索,搜索所走过的路径称为引用链(Reference Chain),当一个对象到GC Roots...原创 2017-01-19 18:36:57 · 331 阅读 · 0 评论 -
JVM汇总
JVM汇总 0. JVM的运行流程 1. 类初始化流程 父类静态块、父类静态变量子类静态块,子类静态变量父类非静态块、父类非静态变量,父类构造函数子类非静态块、子类非静态变量,子类构造函数 2. java类加载流程 加载 根据类名找到.class文件,将该文件读取到内存中建一个数组,存储二进制流的结构...原创 2017-12-21 17:52:49 · 184 阅读 · 0 评论