内存分配策略
程序运行时的内存分配有三种策略,分别是静态的,栈式的,和堆式的.
静态的为程序编译时能确定数据目标占用空间
栈式的为程序运行时,在过程的入口,才能确定数据目标占用空间,按照先进后出的原则
堆式的为编译时和程序运行时在过程的入口都无法确定的数据目标,比如可变长度串和对象实例。
堆和栈的区别
堆是存储对象,而栈是执行程序。
栈 缺点:编译器必须知道要分配多少空间, 优点:速度快
堆是应用程序运行时请求操作系统分配的内存。 缺点:效率低 优点:编译器可以不必知道要分配多少空间,要放多长时间。
jvm 中的堆和栈
jvm是基于堆栈的虚拟机,java为每个新创建的线程分配都分配一个堆栈。堆栈以帧的单位来保存线程的状态。做的操作:以帧为单位的压栈和出栈。
java自动管理堆和栈,跟c++不同。
堆存储java对象,而栈存储基本变量。
栈的重要特性是栈中的数据可以共享