java8新特性回顾(六)---跟OOM:permGen说再见
2017-11-09 23:41
246 查看
方法区(method area):是JVM规范中定义的一个概念,用于存储类信息、常量池、静态变量、JIT编译后的代码等数据。
Permanent Generation space,是Oracle-Sun Hotspot虚拟机特有的概念,针对方法区的一种实现。代表内存的永久保存区域,用于存放Class和Meta的信息,Class在被Load的时候被放入PermGen space区域
Metaspace :JDK8 HotSpot JVM 将移除永久区,使用本地内存来存储类元数据信息并称之为元空间Metaspace
原有PermGen数据迁移:
符号引用(Symbols)转移到了native heap
字面量(interned strings)转移到了java heap
类的静态变量(class statics)转移到了java heap
类的元数据(metadata)转移到了native heap。
迁移原因:
1、字符串存在永久代中,容易出现性能问题和内存溢出。
2、类及方法的信息等比较难确定其大小,因此对于永久代的大小指定比较困难,太小容易出现永久代溢出,太大则容易导致老年代溢出。
3、永久代会为 GC 带来不必要的复杂度,并且回收效率偏低。
4、Oracle 可能会将HotSpot 与 JRockit 合二为一
PermGen 空间的状况:JVM的参数PermSize 和 MaxPermSize 会被忽略并给出警告
Metaspace 容量:默认情况下,类元数据只受可用的本地内存限制(容量取决于是32位或是64位操作系统的可用虚拟内存大小)。JVM新参数MaxMetaspaceSize用于限制本地内存分配给类元数据的大小(耗尽会引发“java.lang.OutOfMemoryError: Metadata space”错误)。如果没有指定这个参数,元空间会在运行时根据需要动态调整。
Metaspace 垃圾回收:对于僵死的类及类加载器的垃圾回收将在元数据使用达到MaxMetaspaceSize参数的设定值时进行。持续的元空间垃圾回收说明,可能存在类、类加载器导致的内存泄漏或是大小设置不合适,因此适时地监控和调整元空间对于减小垃圾回收频率和减少延时是很有必要的。
Java 堆内存的影响:一些杂项数据已经移到Java堆空间中。升级到JDK8之后,会发现Java堆 空间有所增长。
Permanent Generation space,是Oracle-Sun Hotspot虚拟机特有的概念,针对方法区的一种实现。代表内存的永久保存区域,用于存放Class和Meta的信息,Class在被Load的时候被放入PermGen space区域
Metaspace :JDK8 HotSpot JVM 将移除永久区,使用本地内存来存储类元数据信息并称之为元空间Metaspace
原有PermGen数据迁移:
符号引用(Symbols)转移到了native heap
字面量(interned strings)转移到了java heap
类的静态变量(class statics)转移到了java heap
类的元数据(metadata)转移到了native heap。
迁移原因:
1、字符串存在永久代中,容易出现性能问题和内存溢出。
2、类及方法的信息等比较难确定其大小,因此对于永久代的大小指定比较困难,太小容易出现永久代溢出,太大则容易导致老年代溢出。
3、永久代会为 GC 带来不必要的复杂度,并且回收效率偏低。
4、Oracle 可能会将HotSpot 与 JRockit 合二为一
PermGen 空间的状况:JVM的参数PermSize 和 MaxPermSize 会被忽略并给出警告
Metaspace 容量:默认情况下,类元数据只受可用的本地内存限制(容量取决于是32位或是64位操作系统的可用虚拟内存大小)。JVM新参数MaxMetaspaceSize用于限制本地内存分配给类元数据的大小(耗尽会引发“java.lang.OutOfMemoryError: Metadata space”错误)。如果没有指定这个参数,元空间会在运行时根据需要动态调整。
Metaspace 垃圾回收:对于僵死的类及类加载器的垃圾回收将在元数据使用达到MaxMetaspaceSize参数的设定值时进行。持续的元空间垃圾回收说明,可能存在类、类加载器导致的内存泄漏或是大小设置不合适,因此适时地监控和调整元空间对于减小垃圾回收频率和减少延时是很有必要的。
Java 堆内存的影响:一些杂项数据已经移到Java堆空间中。升级到JDK8之后,会发现Java堆 空间有所增长。
相关文章推荐
- Java 8新特性探究(九)跟OOM:Permgen说再见吧
- Java 8新特性探究(九)跟OOM:Permgen说再见吧
- Java 8新特性探究(九)跟OOM:Permgen说再见吧
- Java 8新特性探究(九)跟OOM:Permgen说再见吧
- Java 8新特性探究(九)跟OOM:Permgen说再见吧
- Java 8新特性探究(九)跟OOM:Permgen说再见吧
- Java 8新特性探究(9):跟OOM:Permgen说再见吧
- Java8新特性之再见Permgen_动力节点Java学院整理
- java8新特性回顾(五)---并发增强之stampedLock
- java8新特性回顾(三)
- 关于Java构造函数和继续特性的回顾
- 【JAVA设计模式-第一课】面向对象特性及原则回顾
- java8新特性回顾(四)---并发增强之Striped64和longAdder
- Java9发布回顾Java 8的十大新特性
- Java各个版本的新特性回顾与阐释
- JAVA知识回顾-4(Exception、Error、OOM、Java面向对象特征含义、Override和Overload含义区别)
- java8新特性回顾(二)---stream api
- java8新特性回顾(一)---函数式接口和lamda表达式
- java高级特性之IO流
- java8 新特性之Lambda 表达式