java 数组及数组得内存管理总结

一:一维数组的声明及初始化


数组变量属于引用类型,他的元素可以是引用类型,也可以是基本类型。

        int[] a=new int[3];
        a[0]=1;
        a[1]=2;
        a[2]=3;
        int[] b={1,2,3};
        int c[]={1,2,3};
         //    int d[5];          错误表达方式

a的内存图:

b与c引用的内存图与a一样。b与c引用只是a引用得简写。

 1 public class Test1 {
 2
 3     public static void main(String[] args) {
 4         // TODO Auto-generated method stub
 5         Date[]  days=new Date[3];
 6         days[0]=new Date(28,8,2014);
 7         days[1]=new Date(26,4,2012);
 8         days[2]=new Date(3,4,2008);
 9     }
10 }
11 class Date{
12
13     private int day;
14     private int month;
15     private int year;
16
17     Date(int day,int month,int year){
18         this.day=day;
19         this.month=month;
20         this.year=year;
21     }
22 }

二  二维数组

1         int[][] a=new int[3][];
2         a[0]=new int[2];
3         a[1]=new int[3];
4         a[2]=new int[1];
5         for(int i=0;i<a.length;i++)
6             for(int j=0;j<a[i].length;j++)
7                 a[i][j]=j+1;
8         int [][]b={{1,2},{1,2,3},{1}};

b引用与a引用内存分配一致

java 数组及数组得内存管理总结,布布扣,bubuko.com

时间: 2024-10-10 08:42:07

java 数组及数组得内存管理总结的相关文章

java Vamei快速教程22 内存管理和垃圾回收

作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 整个教程中已经不时的出现一些内存管理和垃圾回收的相关知识.这里进行一个小小的总结. Java是在JVM所虚拟出的内存环境中运行的.内存分为栈(stack)和堆(heap)两部分.我们将分别考察这两个区域. 栈 栈的基本概念参考纸上谈兵: 栈 (stack).许多语言利用栈数据结构来记录函数调用的次序和相关变量(参考Linux从程序到进程). 在Java中,JVM中的栈记录了线程的

Java对象和它的内存管理

java中的内存管理分为两个方面: 内存分配:指创建java对象时JVM为该对象在堆空间中所分配的内存空间. 内存回收:指java 对象失去引用,变成垃圾时,JVM的垃圾回收机制自动清理该对象,并回收该对象所占用的内存. 虽然JVM 内置了垃圾回收机制,但仍可能导致内存泄露.资源泄露等,所以我们不能肆无忌惮的创建对象.此外,垃圾回收机制是由一个后台线程完成,也是很消耗性能的. 1.实例变量和类变量 java程序中的变量,大体可以分为 成员变量 和 局部变量 .其中局部变量可分为如下三类: 形参

Java性能剖析]Sun JVM内存管理和垃圾回收

内存管理和垃圾回收是JVM非常关键的点,对Java性能的剖析而言,了解内存管理和垃圾回收的基本策略非常重要.本篇对Sun JVM 6.0的内存管理和垃圾回收做大概的描述. 1.内存管理      在程序运行过程当中,会创建大量的对象,这些对象,大部分是短周期的对象,小部分是长周期的对象,对于短周期的对象,需要频繁地进行垃圾回收以保证无用对象尽早被释放掉,对于长周期对象,则不需要频率垃圾回收以确保无谓地垃圾扫描检测.为解决这种矛盾,Sun JVM的内存管理采用分代的策略.      1)年轻代(Y

C语言中的数组调用——混乱的内存管理

在C语言中想要创建数组只能自己malloc或者calloc,数组复制则是memcpy. 这样创建出来的数组在调用时是不会检测数组边界的,即你声明了一个长度为5的数组,却可以访问第6个位置……也可以给第7个位置赋值……不知道这算不算内存泄露,可否通过这种方法偷取内存中的情报呢? 例: int main(){ int *list=(int*)malloc(5*sizeof(int)); for(int i=0;i<5;++i){ list[i]=i; } for(int i=0;i<15;++i)

Java程序员必备技能内存管理机——垃圾标记

正文 1.怎么找到存活对象? 通过上篇文章我们知道,JVM创建对象时会通过某种方式从内存中划分一块区域进行分配.那么当我们服务器源源不断的接收请求的时候,就会频繁的需要进行内存分配的操作,但是我们服务器的内存确是非常有限的呢!所以对不再使用的内存进行回收再利用就成了JVM肩负的重任了! 那么,摆在JVM面前的问题来了,怎么判断哪些内存不再使用了?怎么合理.高效的进行回收操作?既然要回收,那第一步就是要找到需要回收的对象! 1.1.引用计数法 实现思路:给对象添加一个引用计数器,每当有一个地方引用

OC_内存管理:MRC与ARC

内存管理 1.1内存管理 1.1.1 C的内存管理,以及麻烦之处 char *p = (char *)malloc(100*sizeof (char)); 这是C的动态内存分配,我们手动跟系统申请了100个字节的内存:或者说系统在堆里开辟了100个字节的空间,并将这个空间的首地址返回给指针变量p. free(p); 使用完成后,手动跟系统释放内存空间:或者说系统回收空间. 如上就是C里简单的内存管理. C的内存管理,我们手动申请,手动释放.这样来看,我们只需要注意三个问题就好了: 1,申请内存,

JMM内存管理

原文地址http://www.cnblogs.com/BangQ/p/4045954.html 原本准备把内存模型单独放到某一篇文章的某个章节里面讲解,后来查阅了国外很多文档才发现其实JVM内存模型的内容还蛮多的,所以直接作为一个章节的基础知识来讲解,可能该章节概念的东西比较多.一个开发Java的开发者,一旦了解了JVM内存模型就能够更加深入地了解该语言的语言特性,可能这个章节更多的是概念,没有太多代码实例,所以希望读者谅解,有什么笔误来Email告知:[email protected],本文尽

OC 高级内存管理

// // main.m // 第8讲 // / #import <Foundation/Foundation.h> #import "teacher.h" #import "classes.h" #import "man.h" #import "woman.h" #import "Student.h" #import "Card.h" /* 类簇: 多个类的组合,多个类来实

iOS开发-内存管理

内存管理 对于这篇呢,其实现在都是ARC模式,正常状态下基本不用我们去手动释放内存,所以如果不是要面试呀.装逼或者扎实功底的,就先别看了或者了解下即可,因为像面试时,有些面试官想看你的基础时,就有些人会问,现在工作基本不会用到. 学习目标 1. 掌握内存管理的原理 2. 掌握手动内存管理 =============================================== 1.需要理解的知识 1.1内存管理 1.1.1 C的内存管理,以及麻烦之处 char *p = (char *)m