码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2015-08-11 23:25:58      阅读:171      评论:0      收藏:0      [点我收藏+]

标签:

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<arr.length;i++){
          for(int j=0;j<arr[i].length;j++){
              arr[i][j] = 100; //将每个元素都赋值为100
          }
      }

   内存图:

技术分享

技术分享


代码示例:

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<arr.length;i++){
			for(int j=0;j<arr[i].length;j++){
				arr[i][j] = 100;
			}
		}
		*/
		
	}
}





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


总结:

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

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






版权声明:本文为博主原创文章,未经博主允许不得转载。

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

标签:

原文地址:http://blog.csdn.net/u011637069/article/details/47428723

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!