-XX:MaxPermSize with or without -XX:PermSize

后端 未结 3 1343
别跟我提以往
别跟我提以往 2020-11-30 20:27

We\'ve run into a Java.lang.OutOfMemoryError: PermGen space error and looking at the tomcat JVM params, other than the -Xms and -Xmx

相关标签:
3条回答
  • 2020-11-30 21:08

    If you're doing some performance tuning it's often recommended to set both -XX:PermSize and -XX:MaxPermSize to the same value to increase JVM efficiency.

    Here is some information:

    1. Support for large page heap on x86 and amd64 platforms
    2. Java Support for Large Memory Pages
    3. Setting the Permanent Generation Size

    You can also specify -XX:+CMSClassUnloadingEnabled to enable class unloading option if you are using CMS GC. It may help to decrease the probability of Java.lang.OutOfMemoryError: PermGen space

    0 讨论(0)
  • 2020-11-30 21:14

    By playing with parameters as -XX:PermSize and -Xms you can tune the performance of - for example - the startup of your application. I haven't looked at it recently, but a few years back the default value of -Xms was something like 32MB (I think), if your application required a lot more than that it would trigger a number of cycles of fill memory - full garbage collect - increase memory etc until it had loaded everything it needed. This cycle can be detrimental for startup performance, so immediately assigning the number required could improve startup.

    A similar cycle is applied to the permanent generation. So tuning these parameters can improve startup (amongst others).

    WARNING The JVM has a lot of optimization and intelligence when it comes to allocating memory, dividing eden space and older generations etc, so don't do things like making -Xms equal to -Xmx or -XX:PermSize equal to -XX:MaxPermSize as it will remove some of the optimizations the JVM can apply to its allocation strategies and therefor reduce your application performance instead of improving it.

    As always: make non-trivial measurements to prove your changes actually improve performance overall (for example improving startup time could be disastrous for performance during use of the application)

    0 讨论(0)
  • 2020-11-30 21:30

    -XX:PermSize specifies the initial size that will be allocated during startup of the JVM. If necessary, the JVM will allocate up to -XX:MaxPermSize.

    0 讨论(0)
提交回复
热议问题