深入理解jvm

深入理解jvm

1、jvm

1.1、什么是jvm

JVM是Java Virtual MachineJava虚拟机的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。

1.2、jvm的内存导图

在这里插入图片描述

在这里插入图片描述

2、类加载器

2.1、什么是类加载器

**Java类加载器(**Java Classloader)是Java运行时环境(Java Runtime Environment)的一部分,负责动态加载Java类到Java虚拟机的内存空间中。

2.2、类加载器的分类

  • Bootstrap classLoader:主要负责加载核心的类库(java.lang.*等),构造ExtClassLoader和APPClassLoader。

  • ExtClassLoader:主要负责加载jre/lib/ext目录下的一些扩展的jar。

  • AppClassLoader:主要负责加载应用程序的主函数类

2.3、双清尾排机制

在实例对象的时候,它向父加载器委托,看是否存在这个包,如果存在就会替代实列的类

3、沙盒安全机制

就是分配权限来保证安全

4、本地方法栈,native

4.1、为什么要用本地方法栈

  • 因为java 无法操作系统,因此java只能通过调用底层c++,c与系统打交道
  • java诞生的时代,c,c++横行
  • 通过native 可以调用其他语言为己使用

5、了解栈

5.1、栈的内存地址

栈是存放类的实列(new 的对象),存放的是实列的内存地址,它指向堆具体的对象

5.2、栈的运行机制

栈的运行过程对象先进先出

6、堆

6.1、堆的内存

堆:新生区(伊甸区,幸存区),老年区

6.2、堆的内存图

6.3、堆的垃圾清理

伊甸区满了发生一次轻gc,幸存区from满了发生是一次是轻gc,老年区满了会发生重gc

7、jvm调优

7.1、gc的算法

引用计数器法:为每个对象创建一个引用计数,有对象引用时计数器 +1,引用被释放时计数 -1,当计数器为 0 时就可以被回收。但是他有一个缺点是不能解决循环引用的问题。

7.2、四种算法

  • 计数法

    每个对象创建一个引用计数,有对象引用时计数器 +1,引用被释放时计数 -1,当计数器为 0 时就可以被回收。

  • 复制法

    按照容量划分二个大小相等的内存区域,当一块用完的时候将活着的对象复制到另一块上,然后再把已使用的内存空间一次清理掉。缺点:内存使用率不高,只有原来的一半。

  • 标记清理法

    每一个对象都会进行标记,如果为0,就会 清除掉

    第一次:标记

    第二次:清除

  • 标记压缩法

    在标记清理法,在标记清理法的基础进行排序

    第一次:标记

    第二次:清除

    第三次:排序

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值