栈分配比堆分配的优点
1,堆分配(GC或非GC)总是要求同步的共享资源.
2,堆分配(GC或非GC)的高速缓存利用率很差(GC涉及大量降低利用率的高速缓存行).
3,堆分配(gc或非gc)永远不是O(1).大的分配需要从有非线性复杂性的系统请求内存(sbrk,mmap等)的syscalls.
而栈分配只是加个整数到指针(现代处理器还有特殊的栈优化,使栈操作/调用/返回减少到几乎为零).此外,由于栈是密集使用的资源,其高速缓存利用率是巨大的,并且由于它是线本资源,所以在高速缓存行上,一般不存在竞争.
栈分配的主要缺点是其大小有限及可能的栈溢出风险.
浙公网安备 33010602011771号