设置JVM参数-2

一. 设置栈的大小
-Xss

详解: https://www.bilibili.com/video/BV1PJ411n7xZ?p=45&spm_id_from=pageDriver
7min

一旦超出了栈设置的大小,抛出java.lang.StackOverflowError异常

二. 设置堆的大小 :堆区在jvm启动时就被创建好了,空间大小也就确定好了。
堆的大小是可以调节的(但是一般不让它自动调节,通常会将-Xms和-Xmx两个参数配置相同的值)

● “-Xms"用于表示堆区(年轻代和老年代,不包括元空间)的起始内存,等价于-XX:InitialHeapSize
● “-Xmx"则用于表示堆区(年轻代和老年代,不包括元空间)的最大内存,等价于-XX:MaxHeapSize

通常会将-Xms和-Xmx两个参数配置相同的值,其目的是为了能够在ava垃圾回收机制清理完堆区后不需要重新分隔计算堆区的大小,从而提高性能。

一旦堆区中的内存大小超过“-Xmx"所指定的最大内存时,将会抛出OutOfMemoryError异常。

-X :表示 JVM的运行参数

ms : memory start

mx : memory max

默认情况下堆的内存(年轻代和老年代)
● 初始内存大小:物理电脑内存大小 / 64
● 最大内存大小:物理电脑内存大小 / 4

配置新生代与老年代在堆结构的占比。
● 默认-XX:NewRatio=2,表示新生代占1,老年代占2,新生代占整个堆的1/3
● 可以修改-XX:NewRatio=4,表示新生代占1,老年代占4,新生代占整个堆的1/5

在HotSpot中,Eden空间和另外两个survivor空间缺省所占的比例是8:1:1
当然开发人员可以通过选项“-xx:SurvivorRatio”调整这个空间比例。比如
-xx:SurvivorRatio=8

-XX:SurvivorRatio=4 Eden空间和另外两个survivor空间缺省所占的比例是4:1:1

  1. -Xmn50M 设置堆内新生代的大小为50M。
    通过这个值也可以得到老生代的大小:-Xmx减去-Xmn

三. 设置方法区(元空间)大小

jdk7及以前
● 通过来设置永久代初始分配空间。默认值是20.75M-XX:Permsize
● 通过来设定永久代最大可分配空间。32位机器默认是64M,64位机器模式是82M
-XX:MaxPermsize
● 当JVM加载的类信息容量超过了这个值,会报异常OutOfMemoryError:PermGen space。

JDK8以后
● 元数据区大小可以使用参数 -XX:MetaspaceSize 和 -XX:MaxMetaspaceSize指定
● 默认值依赖于平台。windows下,-XX:MetaspaceSize=21M -XX:MaxMetaspaceSize=-1//即没有限制。
● 与永久代不同,如果不指定大小,默认情况下,虚拟机会耗尽所有的可用系统内存。如果元数据区发生溢出,虚拟机一样会抛出异常OutOfMemoryError:Metaspace
● -XX:MetaspaceSize:设置初始的元空间大小。对于一个64位的服务器端JVM来说,其默认的-XX:MetaspaceSize值为21MB。这就是初始的高水位线,一旦触及这个水位线,Full GC将会被触发并卸载没用的类(即这些类对应的类加载器不再存活),然后这个高水位线将会重置。新的高水位线的值取决于GC后释放了多少元空间。如果释放的空间不足,那么在不超过MaxMetaspaceSize时,适当提高该值。如果释放空间过多,则适当降低该值。
● 如果初始化的高水位线设置过低,上述高水位线调整情况会发生很多次。通过垃圾回收器的日志可以观察到Full GC多次调用。为了避免频繁地GC,建议将-XX:MetaspaceSize设置为一个相对较高的值。

工作中一般设置-XX:MetaspaceSize ,不设置XX:MaxMetaspaceSize

四.java的 堆外内存/直接内存

-XX:MaxDirectMemorySize
https://blog.csdn.net/qq_34626094/article/details/117173323

五. 出现OOM 时自动生成dump文件

-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/tmp/heapdump.hprof

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容