字段、方法、常量池。方法区也有一块内存区域所以方法区的内存大小,决定了系统可以包含多少个类,如果系统类太多,方法区内存不够肯定会导致方法区溢出,虚拟机同样会抛出内存溢出信息。jdk6和jdk7中,方法区可以理解为永久区.永久区可以使用参数-XX:PermSize和-XX:MaxPermSize制定。默认情况下-XX:MaxPermSize为64MB.如果你项目中使用代理模式或者CGLIB的话可能在运行的时候生成大量的类,如果这样,需要设置一下永久区的大小,防止永久区内存溢出。CGLIB会在后面专门的章节和代理模式一起讲解。系统内存溢出了,扩大-XX:MaxPermSize值,可以生成更多的类。jdk8中永久区被移除了,取而代之的是元数据区,可能方法区依赖jvm的内存吧。元数据区发生溢出,虚拟机一样抛出异常,如下:
暂无评论