Jvm相关知识

Jvm相关知识

JVM跟java无关
jvm是一种跨平台的语言,任何语言只要能编译成class文件,就能被JVM执行
jvm是一种规范
虚构出来的一台计算机

jvm java虚拟机,只是用来执行的
jRE=jvm+core lib
JDK = jre+development kit

JVM到底是什么
大的范围包括classLoader、字节码解释器,即时编译器、执行引擎
自己本身就是一个虚拟的机器,有自己的cpu,有自己的寄存器,有自己的内存管理,有自己的汇编语言
是一种跨语言的平台,它本身是一种规范,常见的JVM的实现Hotspost

GC的基础知识
一.什么是垃圾
java
自动内存回收,编程上简单,系统不容易出错,手动释放内存,容易出现俩种类型的问题
1.忘记回收
2.多次回收
jvm调优,垃圾回收器的选择和参数设置上
一个对象的情况
一个对象没有任何引用指向它的时候,就被称为垃圾
好多的对象
好多个对象互相引用,但是没有其他引用指向这个循环的对象,至少栈空间没有引用,一堆垃圾

二.到底怎么找到垃圾
1.引用计数
2.引用计数不能解决循环引用,Hotspost使用根可达算法,
根对象
JVM stack,
native method stack,
runtime constant pool,
static references in method area,
Clazz

三,常见的垃圾回收算法
标记-清楚算法
找出垃圾把它标记成垃圾,然后清楚掉
1.标记清除-位置不连续产生碎片
2.拷贝算法-没有碎片,浪费空间
3.标记压缩-在找标记的时候,顺便进行内存整理,没有碎片,效率偏低,因为任何一块内存挪动,
在多线程的情况下,都要进行保证线程挪动,或者是单线程,单线程效率本来就偏低

四,JVM内存分代模型(用于分代垃圾回收算法)
1.部分垃圾回收器使用的模型
2.新生代+老年代+永久代(1.7)/元数据区(1.8)Metaspace
    1.永久代元数据 Class
    2.永久代必须指定大小限制,元数据可以设置,也可以不设置,无上限(受限于物理内存)
    3.字符串常量1.7-永久代,1.8-堆
    4.MethodArea逻辑概念-永久代,元数据(不受堆内存的管理,操作系统就管理)
3.新生代=eden+2个survivor区
    1.YGC回收之后,大多数的对象被回收(适合拷贝算法),活着的进入s0
    2.再次YGC,活着的对象eden+s0->s1
    3.再次YGC,eden+s1->s0
    4.年龄足够->老年代(15CMS6)
4.老年代
    1.顽固分子
    2.老年代满了FGC Full GC
5.GC Tuning()
    1.尽量减少FGC
    2.MinorGC = YGC
    3.MajorGC = FGC
五,常见的垃圾回收器
1.Serial 年轻代 串行回收
2.Parallel Scavenge 并行回收
3.ParNew配合CMS的并发回收
4.SerialOld
5.ParallelOld
6.CMS (concurrent mark sweep)老年代 并发的,垃圾回收和应用程序同时运行,降低STW的时间(200ms)
7.G1(10ms)
8.ZGC(1ms)PK C++
9.Shenandoah
10.Eplison

1.8默认的垃圾回收:PS + ParallelOld

JVM参数分类
标准:-开头,所有的HotSpot都支持
非标准:-X开头,特定版本HotSpot支持特定命令
不稳定:--XX开头,下个版本可能取消

G1在物理上已经不分代,逻辑上分代

CMS老年代 并发标记清除,提高程序的响应时间,较低卡顿
GC进程和工作线程同时工作

初始标记(把根上的标记出来),并发标记(找到root上的对象,顺着root的对象,去找,
可能产生漏标和错标),重新标记(漏标的),标记清理

G1是一种服务端应用使用的垃圾收集器,目标是用在多核、大内存的机器上,它在大多数
情况下可以实现指定的GC暂停时间,同时还能保存较高的吞吐量

G1不是大内存分块,而是分成很多小的内存块,叫Region
G1的响应时间比PN+CMS提高了很多,吞吐量少了10%
回收内存时不会全部回收,那块满了,进行回收,回收的时候,顺便进行标记复制算法

当内存超过45%,会产生mixed(类似Mixed,并发回收)G1也存在full GC
G1和cms调优,尽量不要产生FullGC

并发标记

三色标记法
cms和G1,白灰黑,漏标,在remark过程中,黑色指向了白色

 
    

    


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值