3.25笔记(内存划分、数组初识)

本文介绍了程序与进程的区别,重点讲解了JVM内存的划分,包括程序计数器、方法区/静态区、虚拟机栈、本地方法栈和堆内存。详细阐述了各个区域的作用,如程序计数器用于跟踪执行行号,静态区存储class文件和运行常量池,栈内存执行方法和存储局部变量,本地方法栈服务于本地方法,堆内存则用于存储对象。同时,提到了动态加载和静态加载的概念,以及数组的静态和动态声明方式。
摘要由CSDN通过智能技术生成

内存划分

程序和进程
程序 : 可执行文件(指令集合),是个静态概念,一般保存在硬盘中
进程 : 正在执行的文件,是一个动态概念,运行起来的程序,就是指载入到内存中的可执行文件,这个时候操作系统会开启一个进程来运行内存中的这个文件对象,如果要关闭某个程序,就可以直接杀死这个进程

JVM内存划分
Xxx.class 是个静态概念,保存在硬盘中,当我们执行java 运行命令的时候,会把该class文件载入内存中
Java Runtime Data Area : java运行时数据区域,我们一般叫JVM内存
内存被划分为5个区域 : 程序计数器,方法区/静态区/静态代码段 , 栈内存(虚拟机栈) , 本地方法栈 , 堆内存

程序计数器 : 是一块较小的内存区域,作用可以看做是当前执行的行号,比如 if , 循环, 跳转,异常处理等 都需要依赖程序计数器来完成

静态区/方法区/静态代码段 : 是用来存放我们载入内存中的class文件,包括我们的方法,还有代码段都会保存在静态区内部还有一个运行常量池

虚拟机栈 : 又叫栈内存
方法是在栈内存中执行的,包括局部变量也是在栈内存
栈内存 : 是一个以栈数据结构为模型,创建的一段空间
栈 : 是一种数据结构,先进后出,类似于子弹夹
栈空间 : 就是指以栈数据结构为模型开辟的空间
栈帧 : 就是栈内存中每一个栈元素
栈顶元素 : 指最后一个保存进去的元素
栈底元素 : 指最先保存进去的元素 栈操作
压栈 : 把元素添加到栈空间的过程
弹栈 : 在栈空间中把数据删除的过程

本地栈 : 和VM栈结构一致,只不过是用来执行本地方法,比如 hashCode(),我们自己写的方法都在VM栈执行

堆内存 : 用来保存对象根据静态区的class文件,创建的用于存储成员属性的空间每个对象空间
1 头部部分 : hashCode值
2 数据部分 : 成员变量
3 类型 : 是由哪个类创建的对象,静态区的地址

*注意:*栈内存是真正执行程序的地方,其他内存都是存储数据方法调用 就等于是 压栈操作方法执行结束 就等于是 弹栈操作

动态加载和静态加载
动态加载 : 只载入当前程序和需要的文件,如果执行过程中需要别的文件,再去硬盘中找
静态加载 : 开始执行,把所有和当前程序相关的文件,全部一次性载入

数组

***静态声明:***在知道数组中每一个元素的值情况下,使用静态声明,在创建数组的同时就位数组元素分配空间并赋值
数据类型【】 变量={值,值,值…}

***动态声明:***预先不知道保存具体值的情况下使用动态声明,会用对应的默认值占位,需要指定长度
数据类型【】 = new 数据类型【长度】

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值