博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
oop_day03_内存管理、引用类型数组
阅读量:4305 次
发布时间:2019-05-27

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

oop_day03_内存管理、引用类型数组

--20150811

1.内存管理:由JVM来分配并管理------了解为主

   1)堆:

      1.1)用于存储new出来的对象(包括成员变量)

      1.2)成员变量的生命周期:

                创建对象时存在,对象被回收时消失

      1.3)垃圾回收器(GC)用于回收没有任何引用指向的对象

      1.4)GC不定期回收,而回收的过程中透明的

           若想快一些,调用System.gc()

      1.5)内存泄露:不再使用的对象没有被及时的回收

            建议:不再使用的对象将其引用及时的设置为null

     

      内存图:

   2)栈:

      2.1)用于存储所有的局部变量

      2.2)局部变量的生命周期:

                方法被调用时存在,方法执行结束后消失

      2.3)调用方法时,在栈中为该方法分配对应的栈桢,

            栈桢中包含方法中所有的局部变量(参数+变量),

            方法执行结束后,栈桢被清除,局部变量随之消失

  

     内存图:

   3)方法区:

      3.1)用于存储.class字节码文件以及方法

      3.2)方法只有一份,存在方法区中,

            通过this来区分不同的对象

      内存图:

2.引用类型数组

   1)

Cell[] cells = new Cell[4];   //创建Cell数组对象      cells[0] = new Cell(1,2);  //创建Cell对象      cells[1] = new Cell(2,3);      cells[2] = new Cell(3,4);      cells[3] = new Cell(4,5);
2)
Cell[] cells = new Cell[]{     new Cell(1,2),     new Cell(2,3),     new Cell(3,4),     new Cell(4,5)      };
3)
int[][] arr = new int[3][];      arr[0] = new int[2];      arr[1] = new int[3];      arr[2] = new int[2];      arr[1][0]=100; //将arr中第2个元素中的第1个元素赋值为100
4)
int[][] arr = new int[3][4]; //arr包含3个元素,每个元素又包含4个元素      for(int i=0;i

   内存图:

代码示例:

package oo.day03;//引用类型数组演示public class RefArrayDemo {	public static void main(String[] args) {				/*		//1.		Cell[] cells = new Cell[4];		cells[0] = new Cell(1,2);		cells[1] = new Cell(2,3);		cells[2] = new Cell(3,4);		cells[3] = new Cell(4,5);		*/		/*		//2.		Cell[] cells = new Cell[]{			new Cell(1,2),			new Cell(2,3),			new Cell(3,4),			new Cell(4,5)		};		*/		/*		//3.		int[][] arr = new int[3][];		arr[0] = new int[2];		arr[1] = new int[3];		arr[2] = new int[2];		arr[1][0] = 100;		*/		/*		//4.		int[][] arr = new int[3][4];		for(int i=0;i

---------------------------------------------------------------------------------------------

总结:

    内存图可以有助于理解,还是有必要好好看看的,具体见文中图示

    数组是一种引用类型,可以有数组类型的数组(C语言中称二维数组,java中没有二维数组的概念)

你可能感兴趣的文章
docker原始镜像启动容器并创建Apache服务器实现反向代理
查看>>
docker容器秒死的解决办法
查看>>
管理网&业务网的一些笔记
查看>>
openstack报错解决一
查看>>
openstack报错解决二
查看>>
linux source命令
查看>>
openstack报错解决三
查看>>
乙未年年终总结
查看>>
子网掩码
查看>>
第一天上班没精神
查看>>
启动eclipse报错:Failed to load the JNI shared library
查看>>
eclipse安装插件的两种方式在线和离线
查看>>
linux下源的相关笔记(suse)
查看>>
linux系统分区文件系统划分札记
查看>>
Linux(SUSE 12)安装Tomcat
查看>>
Linux(SUSE 12)安装jboss4并实现远程访问
查看>>
Neutron在给虚拟机分配网络时,底层是如何实现的?
查看>>
netfilter/iptables全攻略
查看>>
Overlay之VXLAN架构
查看>>
Eclipse : An error occurred while filtering resources(Maven错误提示)
查看>>