对于不同的Jvm及不同的jdk版本内存模型不同
内存区域 | 名称 | 作用 | 参数 | 异常 | 分析方法 | 解决方案 |
---|---|---|---|---|---|---|
Heap | 堆内存 | 存储对象 | -Xms -Xmx | Java.lang.OutOfMemeoryError:Java heap space | 使用内存分析工具查看问题 | 1.调大-Xmx,2.优化代码 |
Method Area | 方法区 | 1.加载的类信息,2.常量,3.静态变量,4.编译后代码 | -XX:PermSize -XX:MaxPermSize | Java.lang.OutOfMemoryError: PermGen space | 使用内存分析工具查看问题 | 1.调大-XX:MaxPermSize,2.优化代码 |
VM Stack | 虚拟机栈 | 1.局部基本数据类型,2.局部变量引用 | -Xss | StackOverflowError(很少出现):栈深度过大;OutOfMemoryError:拓展栈申请不到内存 | Jstack分析 | 1.调小-Xss,2调小-Xms -Xmx,3.优化代码,4.调大操作系统对jvm分配的内存(栈最大内存=操作系统分配内存-堆内存-方法区) |
Native Method Statck | 本地方法栈 | Native方法服务 | ||||
Program Counter Register | 程序计数器 | 下一条程序指令的字节码 | 无 | 无 | 无 | 无 |
注1:有写错地方欢迎指出,也欢迎补充
注2:Swap内存占满的问题遇到过,但是没搞定