【jvm】MinorGC和FullGC】的更多相关文章

前言 无论是日常工作,还是企业面试,我们都会经常接触到GC.我们都知道GC是java中的垃圾回收策略.GC帮我们省去了很多事.在GC中,我经常听到的就属于MinorGC和FullGC了.那么在什么情况下才会触发这两种GC呢? MinorGC触发条件 虚拟机在进行minorGC之前会判断老年代最大的可用连续空间是否大于新生代的所有对象总空间     1.如果大于的话,直接执行minorGC     2.如果小于,判断是否开启HandlerPromotionFailure,没有开启直接FullGC…
新生代GC(Minor GC)指发生在新生代的垃圾收集动作,因为java对象大多都具备朝生夕灭的特性,所以Minor GC非常频繁,一般回收速度也比较快. 老年代GC(MajorGC/Full GC):指发生在老年代的GC,出现了MajorGC,经常会伴随至少一次的Minor GC,MaiorGC的速度一般会比Minor慢10倍以上. 老年代的连续空间大于新生代对象总大小,或者历次晋升的平均大小就会进行MinorGC,否则进行FullGC…
1.GC回收机制熟悉么,分代算法知道么?2.了解 Java 虚拟机的垃圾回收算法? 从年轻代空间(包括 Eden 和 Survivor 区域)回收内存被称为 Minor GC. Major GC 是清理永久代.Full GC 是清理整个堆空间—包括年轻代和永久代.> Android GCAndroid GC 原理探究- http://geek.csdn.net/news/detail/193654 > Java中的GC是什么? 为什么要有GC?GC目的:回收堆内存中不再使用的对象,释放资源回收…
主要讨论默认的Serial/Serial Old内存分配: 一.几种分配方案 1.  对象优先在Eden分配: 一般情况下,对象会在新生代的Eden区分配,Eden区没有足够空间时,虚拟机会 发起一次MinorGC:当MinorGC时,若无法放入survivor空间,就会再通过分配担保机制转移到老年代中: 2. 大对象直接进入老年代: 通过 -XX:PretenureSizeThreshold参数设置: 3. 长期存活的对象进入老年代: 通过 -XX:MaxTenuringThreshold参数…
触发MinorGC(Young GC) 虚拟机在进行minorGC之前会判断老年代最大的可用连续空间是否大于新生代的所有对象总空间 1.如果大于的话,直接执行minorGC 2.如果小于,判断是否开启HandlerPromotionFailure,没有开启直接FullGC 3.如果开启了HanlerPromotionFailure, JVM会判断老年代的最大连续内存空间是否大于历次晋升的大小,如果小于直接执行FullGC 4.如果大于的话,执行minorGC 触发FullGC 老年代空间不足 如…
1.内存分配参数---大纲 Ø如何设置堆内存 Ø如何设置栈内存 Ø如何设置方法区 Ø如何设置对的分配比率 Ø设置参数打印堆栈: ØJava程序的两种模式:Server&Client 2.设置堆内存 Ø设置最大堆内存 Ø参数:-Xmx10M,表示堆内存最大为10M,如果超过10M则会出现内存溢出的异常. Ø查看方法: maxMemory() Ø设置最小堆内存 Ø参数:-Xms2M,系统初始化的时候就会分配2M内存给java程序. Ø设置新生代内存 Ø参数1:-Xmn5M,表示堆内存中新生代内存大小…
避免FullGC: 1.通过调整堆中新生代和幸存代大小,避免因为幸存代不足而让Minor GC后的对象进入老年代.每次Minor GC都有对象进入老年代会造成数次MinorGC后FullGC. 2.减少永久区浪费,JVM进程启动完毕后,永久区变化不大了,这时可以参看Perm是否有剩余空间,节省Perm区的空间分给新生代用. 缩短单次MinorGC所用时间:选择合理的GC算法,并进行GC算法参数调整.比如 低交互性可使用Parallel Scavenge(这种不会尽可能缩短GC时间) 1.tomc…
java性能优化权威指南读后笔记 三重境界 1.花似雾中看:对于遇到的额问题还看不清,不知道真真假假,是是非非. 2.悠然见南山:虽然刚开始对这个领域还不清楚,但随着时间推移,你对它有许多自己的见解,但对重要的知识还缺乏理解. 3.一览众山小:你对这个领域已经很熟悉了,能够游刃有余的解决遇到的问题. 三大步骤 1.性能监控 1.JVM性能监控: 1.监控垃圾收集报告(GC日志) 2.监控JIT编译器 3.监控内加载 2.依据: 1.GC日志 2.堆转储快照 3.线程快照 4.异常堆栈 2.性能分…
前言:该篇主要对Java虚拟机相关的题目进行介绍. JVM篇 基本上在面试的时候,都会或多或少的涉及JVM,主要看面试官的侧重点,笔者在面试过程中,是通过volatile问题,引导了JVM相关问题上的. 1)JVM的内存区域,各区域存储什么,及其作用. ①程序计数器 #1.当前线程正在执行字节码行号指示器. #2.为了线程切换后能够恢复到正确的执行位置,每个线程都需要一个独立的程序计数器.(线程私有) #3.当线程执行的是一个Java方法,程序计数器记录的是正在执行的虚拟机字节码指令的地址. #…
一.JVM的新生代.老年代.与永久代 JVM中的堆,一般分为三大部分:新生代.老年代.永久代: 1.新生代:主要是用来存放新生的对象,一般占据堆的1/3空间.由于频繁创建对象,所以新生代会频繁触发MinorGC进行垃圾回收.新生代分为以下三个区: Eden区:Java新对象的出生地(如果新创建的对象占用内存很大,则直接分配到老年代).当Eden区内存不够的时候就会触发MinorGC,对新生代区进行一次垃圾回收. ServivorTo:保留了一次MinorGC过程中的幸存者. ServivorFr…