Java 方法区中存放哪些东西?JVM 如何控制方法区的大小以及内存溢出的原因和解决

方法区的大小不必是固定的,JVM 可以根据应用的需要动态调整。方法区主要存放常量、静态变量、虚拟机加载的类信息以及编译后的代码,运行时常量池。通过配置 PermGenspace可以控制方法区的大小

StackOverflowError 异常:如果线程的方法嵌套调用层次太多(如递归调用),随着 Java 栈中帧的逐渐增多,最终会由于该线程 Java 栈中所有栈帧大小总和大于 -Xss 设置的值,而产生 StackOverflowError 异常。

内存溢出解决方法:减少用于程序中 class 的数量。尽量较少的使用静态变量。修改 -XX:MaxPermSize,调大,随着-XX:MaxPermSize 参数值的增大,Java 方法区中可以存储的类型数据也越多

-----------本文结束感谢您的阅读-----------
0%