Student s = new Student();
Student类 变量名= new Student默认构造器
再JVM中的内存分为本地方法栈、全局变量访问区、栈、堆、程序计数器
实例化创建对象时同时操作栈内存和堆内存。
- 栈内保存对象的首地址,也就是对象引用(java中是地址的同义词)(对象名也成为对象的引用)。
- 堆内保存对象的属性。
- 对对象的所有操作只能用过引用来完成,一旦没有任何引用指向对象,对象就会变成垃圾被回收。
栈(stack):栈的存取速度比堆快,效率高。在栈内保存基本数据类型的局部变量和对象的引用值。
堆(heap):堆可以保存那些对空间要求较大的变量。如对象的属性和数组的元素。在堆内存中开辟空间,只能通过内存分配操作符号new,凡是出现关键字new的地方必定分配了一个堆内存。
垃圾回收机制
垃圾回收(Garbage Collection,GC),JDK7以后使用G1(Garbage First)机制:
- 当没有对象引用指向原先分配给某个对象的内存时,该内存会变成垃圾。
- 垃圾回收机制作用的地方是堆内存,与栈内存无关。
- 垃圾回收机制是JVM内部运行的一个优先级比较低的后台线程。
对象被回收情况 - 对象引用被赋值为NULL;Student s = new Student(); s=null;
- 使用匿名对象;Student().sayHello();
- 超出生命周期;for循环