jdk1.7 默认垃圾收集器Parallel Scavenge(新生代)+Parallel Old(老年代) jdk1.8 默认垃圾收集器Parallel Scavenge(新生代)+Parallel Old(老年代) jdk1.9 默认垃圾收集器G1 -XX:+PrintCommandLineFl ...
分类:
其他好文 时间:
2018-07-28 12:14:04
阅读次数:
1026
jvm 性能调优 一、 "jvm 内存模型" 二、目标 在以下三点中,通过修改jvm参数寻找平衡。 GC的时间足够的小 GC的次数足够的少 发生Full GC的周期足够的长 三、方法 1. 减少使用全局变量和大对象; 2. 调整新生代的大小到最合适; 3. 设置老年代的大小为最合适; 4. 选择合适 ...
分类:
其他好文 时间:
2018-07-22 22:30:38
阅读次数:
184
新生代收集器 Serial收集器 它是最基本、历史最悠久的收集器,在JDK1.3.1之前是虚拟机新生代收集的唯一选择。它是一个单线程的收集器,到现在为止,它依然是虚拟机运行在Client模式下的默认的新生代收集器。优点:简单高效。 特点:只会使用一个CPU或一条收集线程去完成垃圾收集工作,在进行垃圾 ...
分类:
编程语言 时间:
2018-07-18 15:15:08
阅读次数:
177
1. JVM堆结构 JVM整个堆大小=新生代+老年代+永久代 在JVM中堆空间划分如下图所示: 1.1 年轻代 所有新生成的对象首先都是放在年轻代,年轻代的目标就是尽可能快速的收集掉那些生命周期短的对象。年轻代一般分3个区,1个Eden区,2个Survivor区(s0 和 s1)。大部分对象在Ede ...
分类:
其他好文 时间:
2018-07-12 16:35:01
阅读次数:
141
堆内存 Java 中的堆是 JVM 所管理的最大的一块内存空间,主要用于存放各种类的实例对象。 在 Java 中,堆被划分成两个不同的区域:新生代 ( Young )、老年代 ( Old )。新生代 ( Young ) 又被划分为三个区域:Eden、From Survivor、To Survivor ...
分类:
编程语言 时间:
2018-07-06 17:43:18
阅读次数:
152
内存模型 《深入理解java虚拟机》 堆 包括新生代和老年代,不包括元数据区 在Minor GC时会将新生代中还存活着的对象复制进一个Survivor中,然后对Eden和另一个Survivor进行清理。所以,平常可用的新生代大小为Eden的大小+一个Survivor的大小 S0=S1 分配担保机制: ...
分类:
其他好文 时间:
2018-06-30 12:55:04
阅读次数:
175
类加载统计: 编译统计: 垃圾回收统计: 堆内存统计: 新生代垃圾回收统计: 新生代内存统计: 老年代垃圾回收统计: 老年代内存统计: 元数据空间统计: 总结垃圾回收统计: JVM编译方法统计: ...
分类:
Web程序 时间:
2018-06-28 19:20:54
阅读次数:
343
synchronized与Lock的区别synchronizedsynchronized是JVM中的关键字,加锁和释放锁都是通过JVM自动完成。说到这个点,就需要说明一下class和其instance在JVM的存储情况。class存储在持久层,并且会存储锁的信息。object实例存储在新生代或者老年代,同样其也存储了该实例对象的锁信息。class类锁publicclassUser{publicst
分类:
其他好文 时间:
2018-06-25 16:45:18
阅读次数:
143
一.GC收集的工具 1.Servial收集器 特点:历史悠久,单线程收集,复制算法,,stop the world,收集新生代,简单高效,专心收集,没有线程切换开销 用在Client模式下是一个非常好的选择。 2.ParNew收集器 特点:就是serial收集器的多线程版本,可控参数回收算法都与se ...
分类:
其他好文 时间:
2018-06-22 01:03:05
阅读次数:
157
JVM是运行java字节码的虚拟机,包括一套字节码指令集、一组寄存器、一个栈、一个垃圾回收,堆和一个存储方法域。运行: java源文件-->编译器-->字节码文件 字节码文件-->JVM-->机器码 ,当一个程序从开始运行,这时虚拟机就开始实例化了,多个程序启动就会存在多个虚拟机实例。程序退出或者关 ...
分类:
编程语言 时间:
2018-06-20 21:34:06
阅读次数:
171