1.内存管理,java数组使用前都要分配内存空间

javaSe中内存主要是分为4个模块,学习java,明白内存里面都存了什么很重要。

1.heap堆:new 出来的对象,和成员变量都在堆里,堆中的内存是动态分配的,只要运行到有需要就可以运行

2.stack栈:主要用来存放局部变量,当这个方法运行完后,局部变量就消失了。(形参是局部变量,也分配到栈区)

3.data segment 数据管理:主要是静态变量和字符串常量等

4.code segment代码管理:存放代码的地方,代码运行前都先加载到这里保存

 

应用类型:除了8个基本类型,都是引用类型,引用类型在内存中是分为两部分存储的,如string A = new string ("hello");在栈里就分配一块内存存储局部变量A,然后在堆里分配内存存储("hello"),栈中的就是应用,应用指向堆里的真实值。简单理解,应用类型在内存中都是一小块内存指向一大块内存。

 java数组:

数组在定义时可以不分配内存空间,但是在使用前就必须要定义内存,要不然就会报空指针异常。

如:

1. int[] arr = null;
此时只是在栈中声明了一个 arr 数组,但并未对其分配空间,所以它没有指向
2. int[] arr = new int[6];
此时在栈中声明了一个arr数组,并且在堆中开辟了一块空间,此时 arr 已经分配内存

 

posted @ 2017-10-19 09:49  微尘chq  阅读(463)  评论(0编辑  收藏  举报