JAVA—软件工程师之路第十天(数组内存原理)

一、内存基础知识

1、内存概述

计算机中有两个重要的存储区域:硬盘和内存。

硬盘是计算机中的重要组件,作用是用来保存各类文件。

内存是计算机中的重要组件,它是临时存储区域,作用是运行程序。不管是已经存在的程序还是我们编写的java程序都是存放在硬盘中的,而在硬盘中的程序是不会运行的,如果需要程序运行,就必须将程序加载到内存中才能运行,运行完毕后会清空内存。

Java虚拟机要运行java程序,就必须要对内存进行空间的分配和管理。从而提高运行效率。

2、Java虚拟机的内存划分

为了提高运算效率,jvm就对空间进行了不同区域的划分,每一片区域都有特定的处理数据方式和内存管理方式。

  • JVM的内存划分:
  • 区域名称

    作用

    寄存器

    给CPU使用,和我们开发无关

    本地方法区

    JVM在使用操作系统功能的时候使用,例如native修饰的内容,和我们开发无关

    方法区

    存储可以运行的class文件

    堆内存

    存储对象或者数组,new来创建的,都存储在堆内存

    栈内存

    方法运行时使用的内存,比如main方法运行,进入栈内存中执行

    栈内存:栈内存主要是用来运行方法的,所有的方法都必须在栈内存中运行

    方法进栈方法一旦被调用,就会加载到栈内存中去运行,这个过程我们叫做方法进栈。而且JVM只会运行处于栈内存顶部的方法

    方法出栈:当方法执行结束之后就会从栈内存中消失,这个过程我们叫做方法的出栈(弹栈)。

    栈内存中的变量细节:在方法中定义的所有变量,都会在这个方法所在的内存中开辟空间。在栈内存中定义的变量,不初始化,是不能直接使用的。

    堆内存在程序中使用new 关键字创建出来的所有东西(特殊定义格式除外),都会保存在堆内存中。并且有系统分配的唯一的内存地址

    堆内存中的变量细节:堆内存中开辟的空间,都会有默认的初始化数据。因此可以直接使用。

    方法区:JVM在加载class文件时,所有的class文件都会被加载到方法区中

    二、数组在内存中的存储

    1、一个数组的内存示意图

    
    

    以上方法执行,输出的结果是[I@5f150435,这个是什么呢?是数组在内存中的地址。new出来的内容,都是在堆内存中存储的,而堆内存中开辟的每个空间都会有一个唯一的内存地址。而=号左侧的变量arr中保存的是数组的地址

    输出arr[0],就会输出arr保存的内存地址中数组中0索引上的元素

    JAVA—软件工程师之路第十天(数组内存原理)

    2、两个数组的内存示意图

    
    

    JAVA—软件工程师之路第十天(数组内存原理)

    来源:程序媛的学习日记

    声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

    上一篇 2021年5月20日
    下一篇 2021年5月20日

    相关推荐