主要区别如下: 一.空间分配: 1.堆(操作系统):一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收,分配方式类似于链表.PS:java中都是系统GC,程序员无法进行GC. 2.栈(操作系统):由操作系统自动分配释放,存放函数的参数值,局部变量值等.操作方式与数据结构中的栈相类似. 二.缓存方式: 1.堆:使用二级缓存,生命周期与虚拟机的GC算法有关(并不是引用为空就立即被GC),调用速度相对较低. 2.栈:使用一级缓存,被调用时通常处于存储空间中,调用后被立即释放. 三.数据结构…