上一篇文章我们看到基本类型数据是通过栈内存管理的,而引用类型数据是通过堆栈二段式内存管理的。那么二段式内存管理有什么好处呢?下面就让小弟为大家浅析一下,希望各位大虾能够帮助指正。
    首先,引用类型包括类,接口,数组三种,而这些类型数据的大小都是很难确定的,因为在类中有属性和方法,具体实现多少属性和多少方法要根据具体的实际情况而定,因此类无法确定其占用内存大小;接口更是如此,每一个接口实现类都不一样,也无法确定其大小;数组有动态数组,同样无法确定大小。那么无法确定其占用内存大小的时候,用栈内存来管理就显得力不从心了,这个时候就想到了堆栈二段式管理,在栈内存中只存储对象的句柄,也就是引用地址;而堆内存中存储它的属性和方法。这样一来,只需要如果想调用这个对象的属性或者方法,只需先要找到该对象句柄就可以了。而且当该对象不再使用的时候,垃圾回收器就会把它回收,既节省空间又十分方便管理,并且在内存中管理的处理速度是十分块的,仅次于寄存器中的处理速度。
下面我们总结一下二段式堆栈内存管理优势:
1.二段式内存管理处理数据的速度十分快,在内存中的处理速度是仅次于寄存器中的处理速度的。
2.二段式内存管理便于引用类型数据的管理,无论是是对象的初始化、对象的调用还是对象内存的回收,都显得十分的清晰和有条理,尤其是当对象不再使用时,垃圾回收器会自动不定时的选择时机对该垃圾内存进行回收,并且不会出现回收错内存的错误,十分的方便和有条理。
这就是我总结的二段式堆栈内存管理优势。