图解JVM(五)——运行时数据区总结

Q1 : JVM内存模型,有哪些区,分别的作用?

在这里插入图片描述

  1. 类加载子系统将class文件加载到运行时数据区
  2. class文件内容会按照规范加载到运行时数据区的不同区域
  3. 执行引擎通过运行时数据区进行指令执行

运行时数据区分类:

在这里插入图片描述

虚拟机栈:

在这里插入图片描述

堆内存:

在这里插入图片描述

方法区:

在这里插入图片描述

Q2: Java 8的内存分代改进?

在这里插入图片描述

Q3 : 类加载流程

在这里插入图片描述

Q4: 对象什么时候进入老年代?

在这里插入图片描述

Q5: Eden和Survivor的比例分配,为什么有两个survivor区?

默认情况下Eden space : Survivor 0 space : Survivor 1 space = 8 : 1 : 1。可通过-XX:SurvivorRatio=8设置其对应比例。-XX:NewRatio=5设置老年代和年轻代的比例。

在Minor GC时,会把Eden区和Survivor From区无法回收的对象复制到Survivor To区,以提高GC的效率。

Q6: 永久代会发生垃圾回收嘛?

永久代会发生垃圾回收,但其效率较低。只有在Full GC(老年代空间不足,永久代空间也不足时)时进行。

回收对象主要是:废弃的常量和不再使用的类型

废弃的常量:无引用即可。

不再使用的类型条件:

  1. 无该类的任何实例对象,包括该类以及其派生子类的所有对象
  2. 加载该类的类加载器被回收
  3. 该类的class对象没有被引用,防止反射获取该类的实例
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JVM内存模型是Java虚拟机在运行所使用的内存分配和管理方式。它包括了运行数据,也就是JVM在内存中划分的不同域,用来存储程序的数据和指令。 JVM运行数据主要包括以下几个部分: 1. 堆(Heap):用于存储对象实例和数组。堆是线程共享的域,所有线程共同使用堆来创建和访问对象。 2. 方法(Method Area):用于存储已加载的类信息、常量、静态变量和编译后的代码等。方法也是线程共享的域,它在内存中占用一块连续的空间。 3. 虚拟机栈(VM Stack):每个线程在创建都会分配一个虚拟机栈,用来存储局部变量和方法调用信息。虚拟机栈是线程私有的,每个线程都有自己独立的虚拟机栈。 4. 本地方法栈(Native Method Stack):与虚拟机栈类似,用于存储本地方法调用的相关信息。 5. 程序计数器(Program Counter Register):用于存储当前线程执行的字节码指令的地址。 这些不同的运行数据JVM内存模型中起着不同的作用,可以提供给程序运行所需的各种资源和环境。例如,堆用于存储对象实例,方法用于存储类信息和静态变量,虚拟机栈用于存储方法的局部变量和方法调用信息等。 总的来说,JVM内存模型和运行数据是Java虚拟机在运行所使用的内存管理和分配方式。它们的不同域有不同的作用,用来存储程序的数据和指令。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [运行数据JVM内存模型](https://blog.csdn.net/weixin_45659364/article/details/124027073)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [JVM:Java内存模型与运行数据域](https://blog.csdn.net/m0_71777195/article/details/131655107)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [Java内存模型与JVM运行数据别详解](https://download.csdn.net/download/weixin_38648037/12745990)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值