JVM入门

按照金字塔原理

一、JVM的内存结构

程序计数器、虚拟机栈、本地方法栈、堆区、方法区。

其中程序计数器、虚拟机栈、本地方法栈3个区域随线程而生、随线程而灭。垃圾收集器在对堆区和方法区。

二、垃圾回收算法

基础:

1.引用计数算法:引用该对象的个数,为0可被回收。

2.可达性算法分析

2.1 不可达情况 进行两次标记,finalize方法可能重新建立连接

3.java中的 强、软(溢出回收)、弱(下一次GC回收)、虚引用

 

算法

1.标记-清除算法  

直接回收不存活,优点:高效 缺点:内存碎片

2.复制算法

将堆区分为  对象区 和 空闲区,将可达的对象拷贝到空闲区,然后清空对象区中所有不可达。

3.标记-整理算法

进行标记清除算法后,移动存活的对象。

4.分代收集算法

young 新生代  tenured 老年代 parment永久代

young代

8:1:1的  eden区 和 survivor0 和 survivor1

新生对象在eden区,开始GC时 ,

将eden存活拷贝到survivor0,清空eden

survivor0满了,将eden survivor0拷贝的survivior1 然后交换 0 和 1. 保持1 为空。

如果1不足以存放0和eden,存放到old,如果old满了 直接full GC

新生代发生的GC 叫做minor GC 频率高。

年老代

内存满时发生 major 即 full GC

 

HotSpot虚拟机包含的所有收集器

  • Serial收集器(复制算法)
  • Serial Old收集器(标记-整理算法)
  • ParNew收集器(停止-复制算法) 
  • Parallel Scavenge收集器(停止-复制算法)
  • Parallel Old收集器(停止-复制算法)
  • Parallel Scavenge收集器的老年代版本,并行收集器,吞吐量优先。
  • CMS(Concurrent Mark Sweep)收集器(标记-清理算法)
  •  

JVM调优的过程中,很大一部分工作就是对于Full GC的调节 减少 FULL GC

Full GC:

a) 年老代(Tenured)被写满;

b) 持久代(Perm)被写满;

c) System.gc()被显示调用;

d) 上一次GC之后Heap的各域分配策略动态变化;

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值