2020-10-31

一、什么是jvm?

	jvm简称java虚拟机,是java程序运行的模块,也是jre的一部分。由于每一个平台有自己的虚拟机,只要将java文件编译一次得到的class文件就可以在不同的平台运行,所以java是一种跨平台的语言。

二、内存划分

类装载器、执行引擎、运行时数据区

在这里插入图片描述
堆:所有对象存在的地方,这个区域的线程共享。
方法区:用于存储已被虚拟机加载的类信息、常量、字符串常量、类静态变量、即时编译器编译后的代码等数据。
栈:存储基本类型和对象的引用。

三、类的加载

1,加载:jvm将.class加载到内存,生成字节码对象。
2,验证:格式校验、字节码校验、元数据验证、符号引用校验。
3,准备:为class对象分配内存,初始化静态成员变量,并且赋值默认值。
4,解析:将常量池中的符号引用替换为直接引用(内存地址)的过程
5,初始化:类加载过程的最后步骤,根据程序员的主观计划去初始化类变量和其他资源,执行clinit()方法过程,根据编写的代码对类变量进行赋值等操作,执行父类、子类的static变量和static静态块,注意如果是接口,不用执行父类的static变量和static静态块,除非子类用到父类的static变量和static静态块。

GC

1,引用标记法:在生成对象的时候,哪个地方放引用了这个对象,计数器将加1,当没有地方引用这个对象的时候对象将被回收。垃圾回收的效率比较高,循环引用不能被GC回收。
2,复制算法:当对象达到一定程度后,将堆中的对象复制到另一个区域(from到to),堆的利用率只有一半。
3,标记清除法:每隔一段时间对堆中的对象进行扫描,将不再使用的对象进行标记,之后在对标记的对象进行清除,这个会造成内存碎片化。(标记压缩算法会优化这个算法)。

总结

jvm是一个很大的内容,希望每天学一点jvm的知识达到了解jvm。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值