关于JVM结构和GC工作机制

本文详细介绍了JVM的结构,包括类装载器、执行引擎、本地库接口和内存区域,其中重点讨论了方法区、Java堆、Java栈、程序计数器和本地方法栈的功能。此外,还深入探讨了内存分配策略以及垃圾收集的四种算法:标记-清除、复制、标记-整理和分代回收,特别强调了分代回收在实际应用中的重要性。
摘要由CSDN通过智能技术生成

一、JVM结构

1.类装载器

      在JVN启动时或者类运行时,将class文件加载到JVM中。

2.执行引擎

      执行class文件中的字节码指令。

3.本地库接口

      主要是调用C或C++实现的本地方法及返回结果。

4.内存区域

      (1)方法区:方法区中存储了类的信息,比如常量池,构造函数,静态变量等。方法区中还有运行时常量池。常量池分为静态常量池和运行时常量池。静态常量池不仅包含字面常量,还包括类和接口的全限定名,字段名称和描述符,方法名称和描述符。可以理解为class文件在内存中的位置。运行时常量池是JVM虚拟机完成类装载后,将class文件中的常量池载入到内存,并保存在方法区。而常说的方法区中的常量池指的是运行时常量池。

     (2)Java堆:存放实例或对象的地方,也是GC的主要区域。方法区和堆是被所有线程共享的。

     (3)Java栈:总是和线程关联在一起,每当创建一个新线程,JVM就会为这个线程创建一个Java栈。Java栈中包含一个或多个栈帧,线程每运行一个方法就会创建一个栈帧,用来存放局部变量,返回值等。每一个方法执行完的过程,就对应一个栈帧从入栈到出栈的过程,Java栈是线程私有的。

     (4)程序计数器:用于保存当前线程执行的内存地址,由于JVM是多线程执行的(线程执行过程中会切换)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值