Java基础学习生疏知识点总结(11)——JVM内存空间

本文详细探讨了JVM内存结构,包括JVM栈、本地方法栈、方法区和程序计数器的作用。讲解了Java程序在JVM中的运行过程,如引用数据类型数组的动态初始化、局部变量的生命周期以及类加载过程。同时,通过内存图展示了对象的创建与存储情况,帮助读者更好地理解Java内存管理。
摘要由CSDN通过智能技术生成

1、JVM内存空间

       为了更好的描述JVM内存空间,Java的开发者、在《Java虚拟机规范》中指出:JVM(运行时数据区)内存共分为JVM栈,堆,方法区,程序计数器,本地方法栈五个部分。
在这里插入图片描述

  • ①JVM栈(java虚拟机栈,以后说栈指的就是jvm栈):方法的调用是有代价的,方法中有局部变量,各种各样的程序指令,这些东西都需要一个内存空间去存放它们,jvm栈就是用来存放这些方法信息。
           所以每调用一个方法,都会有一个存放着该方法信息的栈帧被压入栈中(方法的进栈),每个方法都有自己独立的栈帧,它们是互不影响的。当方法执行结束,存放方法信息的栈帧就没有价值了,它就被销毁了,这个过程称之为方法出栈。
           局部变量的生命周期:每当调用方法,该方法栈帧进栈,局部变量就生效了。随着方法调用结束,方法出栈,栈帧销毁,局部变量就没有了。jvm栈是给我们自己定义java方法用的。
  • ②本地方法栈:和jvm栈类似,不同的是,它是给本地方法调用使用的。
           本地方法:Java去调用C/C++的方法实现一些跟操作系统相关的功能,这些方法都是本地方法。本地方法不是java代码写的,我们不关系它的实现原理。
  • ③方法区:面向对象详细解释,方法区主要存放类型的相关信息。
  • ④程序计数器:工具人,jvm逐行执行class字节码文件,需要有个指示器,指示当前行数。

2、Java程序在JVM的存放过程与运行

2.1、引用数据类型的数组动态初始化

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.2 两个数组内存图

在这里插入图片描述

2.3 JVM内存简单的局部变量

在这里插入图片描述

2.4 数组的静态初始化

在这里插入图片描述

2.5 两个引用指向同一个对象

在这里插入图片描述

3、类加载过程

3.1、类加载

在这里插入图片描述

3.2、一个对象的内存图

在这里插入图片描述

3.3、多个对象内存图

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值