JVM相关总结

补充:

1. GC流程:Eden区->Survivor区->old区

流程图如下

2. 垃圾回收算法

哪些对象算是垃圾,怎么看?

a. 引用计数法

在应用程序中持有该对象的引用,则不是垃圾,否则是

b. 可达性分析

应用GC ROOT作为引用,向下寻找,看某个对象是否可达

算法:

a. 标记-清除

缺点:空间碎片不连续

b. 标记-整理

c. 标记-复制

缺点:耗时

垃圾收集器:

串行:serial和serial old

并行:parallel 和parallel old

以上两种都是在回收时,需要停止应用程序

并发:CMS和G1

在回收时,不需要停止应用程序

3. 类加载器

Java到装载到内存的过程

Java源文件到class文件(javac)

Class文件到装载的内存(用类加载器)

类加载器:负责java字节码,将其转换成java.lang.Class类实例的模块代码

类加载步骤:

1.装载

2.链接

a.验证 魔数开头16进制cafebabe开头,版本号是否正确

b.准备 为类变量分配内存,设置类变量的默认值

c.解析  把符号引用转化为直接引用 符号引用就是用符号表示的目标

3.初始化

实例变量初始化

4.使用

5.卸载

类加载类型:

启动类类加载器

扩展类加载器

应用程序类加载器

自定义类加载器

类加载的几种方式:

1.全盘负责 2.双亲委派 3.缓存机制

双亲委派:

用类加载器加载java字节流时,会先调用父类类加载器,若父类类加载器不能加载,只能用当前类加载器进行加载

如果子类加载器没有加载过该目标对象,则先委托父类加载器加载该目标对象,若父类加载器找不到该字节码文件的情况下,才由该子类加载器进行加载。

Java建议使用双亲委派,但不是强制。

打破双亲委派的几种方式:

  1. SPI(service provider interface):服务发现机制,jdk提供接口规范,产商根据接口面向接口编程实现该规范
  2. Osgi:热部署,热加载
  • 9
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值