JVM学习笔记

java常用指令:

查看字节码指令:

javap -c helloworld.class > helloworld.txt

查看Java进程使用垃圾回收器相关信息指令:

第一步:通过JPS -l 可以获取需要查询java进程号;

第二步:jinfo -flag UserConCMarkSweepGC 进程号。备注:查看该进程是否采用的是CMS收集器

 

类加载机制:

 

双亲委派模式:

 

Run-Time Data Areas 运行时数据区域:

 

JVM Stacks 工作原理:

 

JVM对象内存布局:

 

JVM内存模型:

 

Heap 内存中Old、Young(Eden、S0【From】、S1【To】)说明:

Eden:S0:S1 = 8:1:1 ,因为大部分对象都是“朝生夕死”

Young区包含:Eden和S区:Minor GC

Old区:Major GC,Major GC 通常伴随Minor GC,也就是触发Full GC

Young + Old = Full GC

每次GC都会TSW(The Stop World),暂停所以用户线程。尽量少些触发Full GC(减少Full GC的触发频率)

S0和S1保证每次都有一个是空闲的,可以避免内存不连续(内存碎屏)而导致浪费,采用的是复制算法。

每次GC,对象的年龄都会+1,默认老年代的年龄>15岁。

Heap 内存对象申请与GC触发流程:

 

GC ROOT:

判断GC ROOT 两种策略:1.引用计数;2.可达性分析,由它出发,某个对象是否可达。一般都是采用可达性分析。

a.虚拟机栈的本地变量

b.static 变量、常量引用

c.本地方法中的变量【Thread:C】

d.Thread java线程

c.类加载器:如果它找到一条线路,能够到底某个对象,这个对象也不能称为垃圾。

GC垃圾回收算法

1.标记---清除

2.标记---整理

3.复制算法

GC垃圾收集器,主要是针对垃圾回收算法的应用

1.新生代:Serial、ParNew、Parallel Scavenge、G1

Serial 单线程

ParNew 多线程(并发)

Parallel Scavenge 多线程,并关注“吞吐量”,吞吐量=用户应用执行时间/业务代码执行时间+垃圾收集的时间

以上收集器都是采用的复制算法:适用内存中活跃的对象越少,减轻复制的成本,因为新生代中大多数对象都是“朝生夕死”。

2.老年代:Serial Old、Parallel Old、CMS(concurrent mark sweep---关注“停顿时间”)、G1

Serial Old 单线程

Parallel Old 多线程、吞吐量等

CMS 并发收集器,用户线程和垃圾线程一起执行(CPU切换)

以上收集器采用的是标记-整理/清楚算法。

对堆进行重新布局,平分大小统称为Region 区域,逻辑上还是有Old、Eden、S0、S1区别,物理上已经不是隔离的。

CMS和G1收集器的说明:

CMS:比较关注的是停顿时间---降低吞吐量的要求

 

G1:可以设置用户停顿时间,比如:set pause time = 15ms

 

JVM调优:

(1)、GC收集器:停顿时间和吞吐量

停顿时间[set pause time]:垃圾收集器进行垃圾回收Client执行响应的时间---->用户端很好的体验--->适用于用户交互场景比较频繁,eg:web 应用。

吞吐量:运行用户代码时间/(运行用户代码时间+垃圾收集器执行时间 ),适用于用户代码执行占用CPU资源的时间比较大,比如:跑任务,运算的任务。

停顿时间比较小:CMS和G1(set pause time,not strict 15ms) 适用于Web应用---->并发类收集器

吞吐量优先:Parallel Scavenge 和Parallel Old ----->并行类收集器

窜行收集器:Serial 和Serial Old ------>内存比较小,嵌入式的设备

(2)、内存使用的维度

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值