zoukankan      html  css  js  c++  java
  • 数组的内存结构

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

    内存?奇怪的东西。

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

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

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

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

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

    如我们图中的代码:

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

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

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

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

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

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

     

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

    大概就是这个样子。

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

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

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

  • 相关阅读:
    入门篇:Ubuntu用apache做web服务器
    Linux上vi(vim)编辑器使用教程
    vim打开文档和多文档编辑
    vim常用命令
    进行有效编辑的七种习惯
    Ubuntu Nginx 开机自启动
    UBUNTU SERVER 12.04搭建PHP环境
    ubuntu下安装Apache+PHP+Mysql
    Ubuntu 12.04下LAMP安装配置
    data warehouse 1.0 vs 2.0
  • 原文地址:https://www.cnblogs.com/menghujava/p/9804244.html
Copyright © 2011-2022 走看看