jdk8 Remove PermGen,Metaspace
来源:互联网 发布:景甜到底什么来头知乎 编辑:程序博客网 时间:2024/06/04 00:31
想必大家在开发过程中,肯定遇到过这样的错误:OutOfMemorry:PermGen,特别是在web应用中,热部署或者大量使用框架,经常出现这种错误。这是因为在程序启动时,会预先加载类信息和一些常量到JVM内存中,这块内存叫做PermGen,由于PermGen默认较小,所以在不进行调整时,会经常出现PermGen不够用的情况,还有就是程序有内存泄漏情况,内存回收无法及时回收PermGen内存,导致使用内存越来越大。
这次Java8修改了JVM,去掉了PermGen内存,转而出现了一个Metaspace,其实这两个的作用都类似,都是用来装载一些类信息。但是PermGen是在JVM内存中的,而新的Metaspace是直接在本地内存中的!!!
也就是说,Metaspace大小默认是不受限制的(当然还要根据本地机器的内存大小),这样关于PermGen 内存不够用这样的错误,大家可能再也见不到了,除非你的程序需要很大内存,比机器本身内存还大。
那么我们如果想控制Metaspace内存大小怎么办?MaxMetaspaceSize这个参数可以用来控制最大Metaspace空间。如果设置了这个参数,当你的程序有内存泄漏或者类信息十分多,Metaspace使用量可能超过MaxMetaspaceSize,这时程序将会出现错误:OutOfMemorry:Metaspace!
国外有人详细对比了两个版本JVM关于这块内存修改的影响:Java 8: From PermGen to Metaspace
0 0
- jdk8 Remove PermGen,Metaspace
- JDK8:PermGen变更为MetaSpace详解
- jdk8移除了PermGen,取而代之的是MetaSpace
- JDK8-废弃永久代(PermGen)迎来元空间(Metaspace)
- jdk8 Metaspace 调优
- G1 && PermGen && Metaspace
- JVM在JDK8取消了永久代(PermGen)代之元空间(Metaspace)的意义
- JVM在JDK8取消了永久代(PermGen)代之元空间(Metaspace)的意义
- Metaspace
- JAVA8.0 永久代(PermGen. ) ---> 元空间(Metaspace. )
- JDK8内存模型—消失的PermGen
- Reason of PermGen elimination in JDK8
- jdk8中的PermGen永久代去哪里
- Java 8: 从永久代(PermGen)到元空间(Metaspace)
- Java 8: 从永久代(PermGen)到元空间(Metaspace)
- Java 8的变化: 从永久代(PermGen)到元空间(Metaspace)
- Java 8: 从永久代(PermGen)到元空间(Metaspace)
- Java 8: 从永久代(PermGen)到元空间(Metaspace)
- SVN服务器搭建和使用(一)
- FreeRADIUS RADSQLRELAY说明
- write gpio reg
- 浅谈 C++ 中的 new/delete 和 new[]/delete[]
- Python 分布式计算模块 Parallel
- jdk8 Remove PermGen,Metaspace
- Oracle 修改表
- 将博客搬至CSDN
- CentOS 下安装Mplayer播放器(ubuntu同理)
- SVN服务器搭建和使用(二)
- 根据前序和中序遍历构造二叉树
- C语言中memset的用法 atoi strcmp
- 使用ntpdate校正Linux系统的时间
- 交通灯管理系统