【名师课堂】Java面向对象开发

【名师课堂】Java面向对象开发

Java核心第二部
106课时 |
23947人已学 |
(24 评论)

加入学习
加入学习

堆内存可以被多个栈内存调用

栈内存存放内存地址。

堆内存是内容   

 

per1 per2都有各自的指向,如果把per1的地址内容给了per2,则需要先把per2原先的与内容的连接断开。 原先per2所指向的堆内存是为垃圾内存。

再重新操作per2,则输出的是更改过的per2的内容。

垃圾空间是指没有栈内存指向的堆内存。会被GC garbage collecter收集。gc影响性能,故而要控制对象的产生数量,也即少产生无用的对象。

[展开全文]
沸腾的硫酸 · 2018-06-13 · 类与对象(引用传递初次分析) 0

  1.一块堆内存可以被多个栈内存所指向。

  2.所谓的垃圾空间指的就是没有任何栈内存所指向的堆内存。所有的垃圾空间将会被垃圾收集器回收以释放内存。

[展开全文]

Garbage Collection 才对

[展开全文]

2.4 引用传递初次分析

所有初学者最难的部分就是 引用传递分析。以后的开发之中都是引用传递。

引用传递的本质就在于别名,而这个别名只不过是放在了栈内存之中,即:一块堆内存可以被多个栈内存所指向。

范例:观察引用传递

//引用传递
class Person{//定义一个类,类名称要求首字母大写
	String name;
	int age;
	public void info() {
		System.out.println("name = "+ name + ",age = " + age);
	}
}
public class Class2{
	public static void main(String args[]) {
	    //类名称 对象名称 = new 类名称();
		Person kai = new Person();//声明一个新的对象
		kai.name = "王凯";
		kai.age = 23;
		Person wang = kai;
		wang.name = "小王";
		kai.info();
	}
}

此程序的执行观察时需要通过内存关系图来进行:

范例:观察引用传递

//引用传递
class Person{//定义一个类,类名称要求首字母大写
	String name;
	int age;
	public void info() {
		System.out.println("name = "+ name + ",age = " + age);
	}
}
public class Class4{
	public static void main(String args[]) {
	    //类名称 对象名称 = new 类名称();
		Person per1 = new Person();//声明一个新的对象
		Person per2 = new Person();
		per1.name = "wangkai";
		per1.age = 23;
		per2.name = "kai";
		per2.age = 23;
		per2 = per1;
		per2.name = "hello";
		per2.info();
	}
}

观察此时的内存分析图:

在程序开发过程之中,所谓的垃圾空间指的就是没有任何栈内存指向的堆内存空间,所有的垃圾空间将不定期被java中的垃圾收集器(GC,Garbage Collector)进行回收以实现内存空间的释放,不过从实际开发来讲,虽然java有提供gc,但是gc也会造成程序性能的下降,所以开发过程之中一定要控制你对象的产生数量,即:无用的对象尽可能的少产生。

 

 

 

[展开全文]

引用传递初次分

引用传递的本质在于别名,一块堆内存可以被多个栈内存所指向。

Person per1=new Person();
per1.name="小宇子";
per1.age=30;
//此步骤就是引用传递的操作
Person per2=per1;//采用同样的类型接收
per2.name="狗剩";//设置一个名字
per1.info();

内存关系图

Person per1=new Person();
Person per2=new Person();
per1.name="小宇子";
per1.age=30;
per2.name="张三";
per2.age=20;
per2=per1;
per2.name="狗剩";
per2.age=30;
per1.info();

内存关系图

在程序开发过程中,所谓的垃圾空间指的就是没有任何栈内存指向的堆内存空间,所有的垃圾空间将不定期被java垃圾收集器(GC  Garbage Collector)进行回收以实现内存空间的释放,从实际开发来讲,虽然java有GC,但是GC会降低程序的性能,所以在开发中一定要控制好对象的产生数量,即:无用的对象尽可能少产生。

 

[展开全文]
致知格物 · 2017-11-01 · 类与对象(引用传递初次分析) 1

引用传递本质在于别名,放在栈内存中,一个堆内存空间

当两个对象引用同一内存地址时,无论任何一方属性发生改变,另一方的属性也会同时发生改变

垃圾空间:没有任何栈内存指向的堆内存空间,将不定期的GC回收。

[展开全文]

Person per2 = per1;

未开辟新的堆内存;栈内存存储的地址指向同一堆内存。

修改per2的对象属性,然后输出per1的对象属性。

若使用per2 = per1 ;

 

会导致per2原来指向的堆类存会变成垃圾空间。

 

[展开全文]
终结命运 · 2017-06-29 · 类与对象(引用传递初次分析) 0

引用传递的本质是别名,别名存在栈内存中,一块堆内存可以被多个栈内存指向

 

没有任何栈内存指向的堆内存空间叫做垃圾空间。

GC(垃圾收集器)收集垃圾空间

 

[展开全文]
wangyunchuan · 2017-06-21 · 类与对象(引用传递初次分析) 0

授课教师

阿里云开发者社区全面升级
一站式体验,助力云上开发!
进入新社区

相关课程

查看更多 >

本课程相关云产品