先回顾一下 JVM 的结构
堆内部的分代
JVM 参数既多且杂,如何提纲挈领,避免挂一漏万呢?个人的想法是掌握原理,了解常用的参数就好了,以度量来驱动适用于你的应用程序的参数设置。
目的: 尽量减少停顿时间,释放出更多可用内存
Java 命令行选项一般分为三类
以 Cassandra 为例,它是的一个高性能的分布式NOSQL 数据存储系统,它设置了如下 JVM 参数:
一般来说,比较常用的方法是通过 JMX 和 GC log 来度量你的 JVM 参数设置是是否合理,一旦发现异常或者 OOM 要马上采取措施进行调整
关于 JVM 内存溢出的分析可以参考以前写的 内存溢出不可怕,手足无措才尴尬
服务器是8核16G要先设置成10G,即物理内存的一半再多加一些(建议跟最大堆大小设置成相同值,这样可以减少刚部署阶段的fullgc次数),然后运行一段时间再看容器的监控,看容器还剩多少内存。如果还剩很多,再调大一些,例如设置成12G,直到充分利用容器物理内存为止。设计JVM步骤如下:1、打开win10系统的环境变量。
2、在系统变量中,新建变量JVM_OPTS,值设置为-Xms1024M-Xmx2048M-XX:PermSize=256M-XX:MaxNewSize=256M-XX:MaxPermSize=512M(具体根据实际情况进行配置)。
3、保存设置后,每次启动服务器都会按这个配置初始化JVM虚拟机内存。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)