博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数组的内存结构
阅读量:5141 次
发布时间:2019-06-13

本文共 596 字,大约阅读时间需要 1 分钟。

看这个标题就大概知道了这一章的内容

内存?奇怪的东西。

看了我们前面的Java运行机制我们都知道Java程序在运行的时候会创建一个jvm(Java虚拟机)

我就简单的画一下jvm的内存结构:

首先jvm中有两大地方:一个叫做栈,另一个叫做堆,分别有不同的特点

栈:空间小,存储速度快,主要存储基本数据类型的变量(局部变量),还有一个特点就是:先进后出

堆:空间大,存储速度慢,主要存储的是对象,

如我们图中的代码:

我们简单的模拟一下运行时内存的情况:

 

程序是从main函数开始运行的,肯定是main函数先进栈,在栈的最下面

 

 然后往下走,遇到创建数组的代码

这时会做两个件事,一是在栈中开辟一块空间,二是在堆中开辟一块空间

首先来看栈中,开辟后就会压在main函数的上面,并且这块内存有个名字:array

 

再看堆中,这块内存会有一个地址,这个地址都是十六进制,然后把每个值存入对应的索引中

 

栈中array内存中的内容也会变成这个堆中的地址

大概就是这个样子。

 

当我们使用这个数组时,肯定会根据数组的名字找到这块内存空间,然后发现里面是个地址,然后跳转到堆中,根据索引得到对应的值。

当程序执行完后,array内存释放(相当于删除),然后main出栈。

 

数组的内存结果大概就是这样子了。

 

转载于:https://www.cnblogs.com/menghujava/p/9804244.html

你可能感兴趣的文章
SQL查询xml内容
查看>>
jzoj5813
查看>>
HttpServletRequest 获取URL的方法及区别
查看>>
VMware环境和Window环境进行网络连接的问题
查看>>
macOS10.12允许所有来源设置
查看>>
C++有关 const & 内敛 & 友元&静态成员那些事
查看>>
函数积累
查看>>
python搜索引擎(转)
查看>>
python基础(三)
查看>>
json详解
查看>>
iOS开发日记3-微信支付
查看>>
exec和eval内置函数
查看>>
Java变量命名规范
查看>>
爬虫大作业-爬取B站弹幕
查看>>
delta3d与ode物理引擎的结合。
查看>>
重载与重写的区别
查看>>
小甲鱼pe结构讲解
查看>>
OD使用教程9 - 调试篇09|解密系列
查看>>
外中断01 - 零基础入门学习汇编语言69
查看>>
PE格式详细讲解11 - 系统篇11|解密系列
查看>>