今天给各位分享java方法区永久代的知识,其中也会对java 永久代进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
1、java中堆区中的永久代是不是就是所谓的方法区2、方法区, 永久代, 元空间, GC日志3、jdk1.8关于方法区的变化
java中堆区中的永久代是不是就是所谓的方法区
方法区:线程共享的,用于存放被虚拟机加载的类的元数据信息:如常量、静态变量、即时编译器编译后的代码。也称之为永久代。
方法区, 永久代, 元空间, GC日志
永久区(Impl)是方法区(一种规范,interface)的一种实现,方法区不是heap(实际上方法区别名nonheap,就是想和heap分开). 永久区是一种常驻内存区域,没有GC,存放的是JDK自带的Class,Interface等元数据(所以Java8之后叫metaspace”元空间”), i.e. 存储的是Running Environment所必须的类信息,装进此区域的数据不会被GC,关闭JVM才会释放此区域占用的内存。
IDEA中可以在VM options中调节VM的配置: e.g. -Xmx100m -Xms100m -XX: +PrintGCDetails ( PrintVMOptions ). etc.
重现 OutOfMemoryError: Java heap space : e.g.
Only shows GC OOM error part:
怎么看:
[名称: GC前内存占用-GC后内存占用(该区总内存大小)] , 所有 [] 之后的那个最大的 A-B 是JVM堆的总大小,然后是这次GC耗时。从第一个 PSYoungGen 中看出YoungGen占整个heap的大小差不多是1/3
注:
jdk1.8关于方法区的变化
1、 java7之前,方法区位于永久代(PermGen),永久代和堆相互隔离,永久代的大小在启动JVM时可以设置一个固定值,不可变;
2、 java7中,static变量从永久代移到堆中;
3、 java8中,取消永久代,方法存放于元空间(Metaspace),元空间仍然与堆不相连,但与堆共享物理内存,逻辑上可认为在堆中 ,但是实际上我们说的堆指的是用于存放java对象的那些空间。元空间并不在虚拟机中,而是使用本地内存
另外:
详情请见—
java方法区永久代的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java 永久代、java方法区永久代的信息别忘了在本站进行查找喔。