40.JVM方法区(元空间)大小设置(-XX:MetaspaceSize和-XX:MaxMetaspaceSize)

目录

  • 1.方法区内存大小设置
  • 2.如何解决OOM问题?(了解)

1.方法区内存大小设置

1.方法区的大小可以不是固定的,JVM可以根据应用需要自动调整。
a)JDK7及以前(了解):-XX:PermSize设置永久代初始大小。-XX:MaxPermSize设置永久代最大可分配空间。(JDK7目前已经很少用了,这两个参数在JDK8及以后已经没有了,所以不必掌握,了解一下)
40.JVM方法区(元空间)大小设置(-XX:MetaspaceSize和-XX:MaxMetaspaceSize)_第1张图片
b) JDK8及以后:可以使用-XX:MetaspaceSize-XX:MaxMetaspaceSize设置元空间初始大小以及最大可分配大小。
例子:设置初始大小是100M,最大可分配空间也是100M-XX:MetaspaceSize=100m -XX:MaxMetaspaceSize=100m
1.如果不指定元空间的大小,默认情况下,元空间最大的大小是系统内存的大小,元空间一直扩大,虚拟机可能会消耗完所有的可用系统内存。
2.如果元空间内存不够用,就会报OOM
3.默认情况下,对应一个64位的服务端JVM来说,其默认的-XX:MetaspaceSize值为21MB,这就是初始的高水位线,一旦元空间的大小触及这个高水位线,就会触发Full GC并会卸载没有用的类,然后高水位线的值将会被重置。
4.从第3点可以知道,如果初始化的高水位线设置过低,会频繁的触发Full GC,高水位线会被多次调整。所以为了避免频繁GC以及调整高水位线,建议将-XX:MetaspaceSize设置为较高的值,而-XX:MaxMetaspaceSize不进行设置。
40.JVM方法区(元空间)大小设置(-XX:MetaspaceSize和-XX:MaxMetaspaceSize)_第2张图片

2.如何解决OOM问题?(了解)

下面的内容先了解一些。
40.JVM方法区(元空间)大小设置(-XX:MetaspaceSize和-XX:MaxMetaspaceSize)_第3张图片
更多JVM文章请访问我的JVM专栏:
https://blog.csdn.net/u011069294/category_10113093.html

你可能感兴趣的:(JVM,方法大小设置,元空间大小设置,永久代大小设置)