堆内存溢出
使用mat、visualvm工具进行dump堆内存分析
栈内存溢出
java虚拟机规范
如果线程请求的栈深度大于虚拟机所允许的最大深度,将抛出StackOverflowError
如果虚拟机的栈内存允许动态扩展,当无法申请到足够内存时,将抛出StackOverflowError
方法区内存溢出
静态变量,字符串常量 --------堆中存放
类型信息、class文件常量池(静态常量池)、运行时常量池 ---------元空间存放
方法区溢出的场景Metaspace泄漏排查
1、常量池里对象太大
2、加载类的”种类“太多
动态代理的操作库生成了大量的动态类
JSP项目
脚本语言动态类加载
直接内存溢出
代码缓冲区
设置合理的代码缓冲区大小
如果项目平时性能ok,但是突然性能下降业务没有问题,可排查是否由代码缓存区满导致