为什么 Java 使用堆来分配内存?

2022-09-03 06:09:57

我刚刚在一本java书中读到了这个声明,说Java中的对象驻留在堆上。使用堆是因为它是存储数据和快速检索数据的最佳方式吗?

我只是一个关于数据结构作为初学者的想法。我的意思是为什么不堆叠或其他东西?


答案 1

堆栈的问题在于,您只能删除最近添加的内容。这适用于局部变量,因为它们在您进入和退出函数时来来去去,但对于任意数据来说就不那么好了,因为任意数据的生命周期不遵循单个函数的生命周期。内存堆允许您随意添加和删除数据。


答案 2

VM 仅使用堆来分配和解除分配内存块。要访问那里的对象,请使用对内存块的引用(该引用位于堆栈中)。jvm 不允许直接访问内存(如 C/C++)。


推荐