Java知识总结(6)——内存分析

本文深入探讨了Java中变量类型的分类,类与对象的区别,内存分配区域的划分及其实例分析,帮助理解Java内存管理机制。

1、Java语言中除基本类型之外的变量类型都称之为应用类型。Java中的对象是通过引用对其操作的。

2、在内存中类和对象的区分:

a、类是静态的概念,存放在代码区;

b、对象是new出来的,位于堆内存(动态的)中,类的每个成员变量在不       同的对象中    都有不同的值(除了静态变量),而方法只有一份,执行的时候  才占用内存。

3、Java在内存分配时涉及到的区域:

◆寄存器:我们在程序中无法控制

◆栈:存放基本类型的数据和对象的引用,但对象本身不存放在栈中,而是     存放在堆中

◆堆:存放用new产生的数据

◆静态域:存放在对象中用static定义的静态成员

◆常量池:存放常量

◆非RAM存储:硬盘等永久存储空间

4、内存实例分析:

a、主类:

package yc.test;

public class T {

     public static voidmain(String[] args) {

          Test test = new Test();

          test.setI(2);

          test.setJ(2);

          System.out.println("add:"+test.add());

     }

}

b、辅类:

package yc.test;

public class Test {

     private int i= 0;

     private int j= 0;

     public intadd(){

          return i+j;

     }

     public intgetI() {

          return i;

     }

     public voidsetI(int i) {

          this.i = i;

     }

     public intgetJ() {

          return j;

     }

     public voidsetJ(int j) {

          this.j = j;

     }

}

分析:从主函数开始,①在栈内存中,创建一个引用变量test并设置值为null;②在堆内存中,生成一个对象Test,并将其空间首地址值赋给引用变量test;③在栈内存中,创建一个基本数据类型变量x并且赋值为2;

④将test所指对象的i(堆内存中)赋值为x;

⑤完成赋值过后,退出方法回到主函数之前,将栈内存中的x变量释放掉;

⑥重复③④⑤步完成test所指对象的j的赋值;

⑦test调用add方法读取出堆内存中i、j的值进行运算,完成输出。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值