对象内存管理
编译好的java程序需要运行在jvm中。
程序,无论代码还是数据,都需要存储在内存中,jvm为java程序提供并管理所需要的内存空间。
jvm内存分为堆、栈、方法区分别用于存储不同的数据。
对象存储在堆中
jvm在其内存空间开辟一个称为 堆 的存储空间。
这部分空间用于存储使用new关键字所创造的对象。
成员变量的生命周期
访问对象需要依靠引用变量
当一个对象没有任何引用时,被视为废弃的对象,属于被回收的范围,该对象中的所有成员变量也就随之被回收。
成员变量的生命周期为:从对象在堆中创建开始到对象从堆中被回收结束。
垃圾回收机制
垃圾回收器是jvm自带的一个线程,用于回收没有任何引用指向的对象。
java程序员不用担心内存管理,因为垃圾回收会自动回收管理。
java程序的内存泄漏问题
内存泄漏是指,不再使用的内存没有被及时回收,严重的内存泄漏会因为过多的内存占用而导致程序的崩溃,
system.gc()方法
GC的回收对程序员来说是透明的,并不一定发现有无引用的对象,就立刻回收。
一般情况下,当我们需要GC线程即刻回收无用对象时,可以调用system.gc()方法。
system.gc()用于建议虚拟机马上调度GC线程回收资源,具体的实现策略取决于不同的jvm系统。
栈用于存放方法中的局部变量