Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用Fortify的PermGen outofmemory错误_Java_Out Of Memory_Permgen_Fortify - Fatal编程技术网

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使用自己的JRE(请查看
    [Fortify Install Root]\JRE
    [Fortify Install Root]\jre64

  • 如果使用
    -debug verbose-logfile Project_Scan.txt
    ,您可以看到扫描引擎是否存在内存压力问题,因为它每隔一段时间就会转储内存使用量

  • 确保您使用的是最新版本的Fortify。如果您的扫描需要20个小时,则可能是最新版本解决了速度和内存问题。最新的是4.20

  • 为了加快扫描速度,您看过并行分析模式吗?这是在4.00中介绍的,您可以在用户指南附录B中阅读

  • 我曾在翻译周期中做过一些重记忆调优,下面的工作很好。它也应适用于扫描周期请注意,这是一种极端的内存使用情况,并不是所有Fortify的最佳使用方式。

    -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
    
  • 您可以/应该使用JConsole来监视流程


  • 使用
    Java 8
    时,将忽略选项
    -XX:MaxPermSize
    ,并在设置该选项时发出警告。Java8中不再有
    PermGen空间了。Fortify使用自己的JRE(版本6),而不是Java 8。Fortify不使用Java 8。它使用自己的JRE。