递归为什么会一发 java.lang.StackOverflowError– 递归过深,栈帧数超出虚拟栈深度
元空间 metaspace 和 永久代 permgen
metaspace | permgen | |
---|---|---|
内存 | 使用本地内存 | 使用jvm的内存 |
metaspace 优势
Java堆
- 对象实例的分配区域
- GC管理的主要区域
JVM三大性能调优参数
- -Xms 堆的初始值
- -Xmx 堆能达到的最大值
- -Xss 规定了每个线程虚拟机栈(堆栈)的大小
Java内存模型中堆和栈的区别-内存分配策略
- 静态存储:编译时确定每个数据目标在运行时的存储空间需求
- 栈式存储:数据区需求在编译时未知,运行时模块入口前确定
- 堆式存储:编译时或运行时模块入口都无法确定,动态分配
堆 | 栈 | |
---|---|---|
管理方式 | GC | 自动释放 |
空间大小 | 大 | 小 |
碎片相关 | 多 | 远小于堆 |
分配方式 | 动态分配 | 静态和动态分配 |
效率 | 低 | 高 |