Java 使用Fortify的PermGen outofmemory错误
我正在运行强化静态代码扫描Java 使用Fortify的PermGen outofmemory错误,java,out-of-memory,permgen,fortify,Java,Out Of Memory,Permgen,Fortify,我正在运行强化静态代码扫描 main\Src>sourceanalyzer -64 -Xmx6500m -b project -scan -f project.fpr JDK是1.8 java -version java version "1.8.0_05" Java(TM) SE Runtime Environment (build 1.8.0_05-b13) Java HotSpot(TM) 64-Bit Server VM (build 25.5-b02, mixed mode)
main\Src>sourceanalyzer -64 -Xmx6500m -b project -scan -f project.fpr
JDK是1.8
java -version
java version "1.8.0_05"
Java(TM) SE Runtime Environment (build 1.8.0_05-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.5-b02, mixed mode)
20个小时后,我发现了永久错误
[error]: Unexpected exception: java.lang.OutOfMemoryError: PermGen space
^Cendering results 99% [====================]
根据大量资料,PermGen在Java8中已经过时
有什么想法吗?还有增加永久发电机空间的选项
-XX:+UseConcMarkSweepGC -XX:+CMSPermGenSweepingEnabled -XX:+CMSClassUnloadingEnabled
还可以选择在PermGen空间上启用垃圾收集
-XX:+UseConcMarkSweepGC -XX:+CMSPermGenSweepingEnabled -XX:+CMSClassUnloadingEnabled
尽管如此,您还是应该向HP咨询是否确实需要增加PermGen空间,这也可能是软件中的一个缺陷。PermGen空间内存不足错误通常是由内存泄漏引起的。我认为在Java 8中,PermGen空间已被Metaspace完全取代。JVM选项
-XX:PermSize and -XX:MaxPermSize
已被替换为
-XX:MetaSpaceSize and -XX:MaxMetaspaceSize respectively.
试试看
[Fortify Install Root]\JRE
和[Fortify Install Root]\jre64
)-debug verbose-logfile Project_Scan.txt
,您可以看到扫描引擎是否存在内存压力问题,因为它每隔一段时间就会转储内存使用量-XX:MaxPermSize=256m -XX:NewRatio=4 -XX:SurvivorRatio=8 -XX:+UseCompressedOops
-XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+DisableExplicitGC
-XX:+UseCMSInitiatingOccupancyOnly -XX:+CMSClassUnloadingEnabled
-XX:+CMSScavengeBeforeRemark -XX:CMSInitiatingOccupancyFraction=68
使用
Java 8
时,将忽略选项-XX:MaxPermSize
,并在设置该选项时发出警告。Java8中不再有PermGen空间了。Fortify使用自己的JRE(版本6),而不是Java 8。Fortify不使用Java 8。它使用自己的JRE。