相关疑难解决方法(0)

PermGen和Metaspace有什么区别?

在Java 7之前,JVM内存中有一个名为PermGen的区域,JVM用于保存其类.在Java 8中,它被删除并被称为Metaspace的区域取代.

PermGen和Metaspace之间最重要的区别是什么?

我知道的唯一区别是java.lang.OutOfMemoryError: PermGen space不能再抛出并MaxPermSize忽略VM参数.

java permgen java-7 java-8 metaspace

107
推荐指数
3
解决办法
5万
查看次数

java8"java.lang.OutOfMemoryError:Metaspace"

在将我们的Java应用程序(在Tomcat上运行的服务)JRE从Java 7切换到Java 8后,我们开始看到java.lang.OutOfMemoryError: Metaspace运行了几天后流量很大.

堆使用没问题.在性能测试期间执行相同的代码流之后,元空间会跳转.

可能导致元空间内存问题的原因是什么?

目前的设置是:

-server -Xms8g -Xmx8g -XX:MaxMetaspaceSize=3200m  -XX:+UseParNewGC 
-XX:+UseConcMarkSweepGC -XX:MaxGCPauseMillis=1000 
-XX:+DisableExplicitGC -XX:+PrintGCDetails 
-XX:-UseAdaptiveSizePolicy -XX:SurvivorRatio=7 -XX:NewSize=5004m 
-XX:MaxNewSize=5004m -XX:MaxTenuringThreshold=12 
-XX:CMSInitiatingOccupancyFraction=75
-XX:+UseCMSInitiatingOccupancyOnly -XX:+PrintFlagsFinal  
-XX:+PrintGCDateStamps -XX:+PrintTenuringDistribution 
-XX:+PrintGCCause -XX:+PrintAdaptiveSizePolicy 
-XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=3 -XX:GCLogFileSize=200M 
Run Code Online (Sandbox Code Playgroud)

该应用程序也大量使用反射.我们还使用自定义类加载器.所有这些都在java 7中运行良好.

java out-of-memory metaspace

27
推荐指数
2
解决办法
5万
查看次数

标签 统计

java ×2

metaspace ×2

java-7 ×1

java-8 ×1

out-of-memory ×1

permgen ×1