堆栈是典型的两类内存分配方式,它们的存在都是为了优化内存,提高使用效率,各有特点,使用在不同的场景中。
一,栈
栈具有先进后出,后进先出的特性,数据连续存储,操作简单,使用方便,无需管理。
大部分芯片都对栈提供芯片级别的硬件支持,只需要移动指针就可以快速实现内存的分配和回收。比如局部变量使用栈内存,从而减少不必要的内存分配管理。
栈创建和删除的时间复杂度是O(1),速度快。
栈的缺点是不利于管理大内存,栈中的数据大小和生存周期都是确定的,缺乏灵活性。
二,堆
堆内存的管理机制相对复杂,有一套相应的分配策略,防止大量小碎片出现,同时加快查找。
堆用于动态创建分配内存,创建和删除节点的时间复杂度是O(logn)。
堆的回收机制也复杂很多,根据内存大小不同,数据生命周期不同,采用相应的回收机制,涉及操作系统的堆管理。
因为堆内存的管理和申请相对复杂,更消耗系统资源,通常生命周期更长使用范围更广的全局变量使用堆内存。
#Java#