堆和栈的区别

来源:互联网 发布:加拿大飞行夹克淘宝店 编辑:程序博客网 时间:2024/05/20 09:21

栈和堆都是java用来在内存中存储数据的地方。java的堆是一个运行时数据区,类的对象从中分配空间,这些对象通过new、newarray、anewarray汉儒multianewarray等指令建立,它们不需要程序代码显式的释放、堆是由垃圾回收来负责的,堆的优势是可以动态的分配内存大小,生存期也不必事先告知编译器,因为它是运行时动态分配内存的java的垃圾收集器会自动收走这些不再使用的数据。但缺点是,由于要在运行时动态分配内存,存储速度较慢。

栈的优势就是,存取速度比堆快,仅次于寄存器,栈数据可以共享,但缺点是存在栈中的数据大小与生存期必须是确定的缺乏灵活性。栈中主要存放一些基本类型的变量(int、short、long、byte、float、double、boolean、char)。