尚硅谷JavaSE基础

5.5.4 匿名对象

1. 什么是匿名对象

在创建对象后并不把对象的地址保存在引用变量中, 而是直接使用创建好的对象的引用访问成员.

 

public class TeacherTest {

public static void main(String[] args) {

new Teacher().eat(“宫暴鸡丁”);  // 后面不能再使用这个对象了

}

}

 

 

2. 匿名对象特点

因为对象没有使用引用变量保存, 所以对象访问完成后, 就无法再次访问了

3. 匿名对象作用

  1. 适用于对象的一次性使用场景中
  2. 适用于方法调用时传递对象
  3. 适用于对象的传递(对象作为参数传递)

 

 

5.6 Java内存管理

5.6.1 内存分类

1. 栈和堆

Java中的内存管理分为两部分, 一部分是栈, 另外一部分是堆.

栈(stack)是后进先出的内存结构, 主要作用是方法调用时使用, 在内存中占用的空间比较小

堆(heap)是内存的绝大部分空间, 没有特定的结构, 堆内存的特点是大.

堆内存分为两部分, 一部分是方法区, 另外一部分称为GC区

5.6.2 垃圾回收

1. 什么是垃圾

主要是指在堆内存中的GC区中, 由于对象不再使用后, 对象所占用的空间应该被释放, 这个空间就称为垃圾, 这个对象就称为垃圾对象

2. 垃圾如何回收

垃圾的回收是由GC(垃圾回收器)在后台处理, 在程序中,当某个对象不再有引用指向时, 这个对象就变为垃圾对象, 对象占用的空间就会由GC标记为可用状态, 这样,再次创建新对象时, 就可以使用这个可用空间, 从而可以实现自动的内存清理.

 

5.6.3 对象创建

1. 对象创建在哪里

对象创建在GC区中

2. 对象创建过程

1) 在方法区中加载类模板

2) 依据类模板中属性的定义, 在GC区中开辟空间

3) 把这个空间的地址返回给对象的创建者中的引用变量

3. 对象销毁

当一个对象被认定是垃圾后, 由GC在后台负责销毁此对象, 并释放内存空间.