慢慢学,每天进步一点点,总有一天会变成心目中向往的样子。

在这篇文章中将会介绍常用的JVM参数配置,以及每个参数的含义。

配置堆内存

每一JVM应用程序都有一个非常重要的配置,堆内存的配置,它影响这应用程序执行的性能。我们可以给程序配置一个最小的启动内存和最大占用内存的限制。就如下:

-Xms[unit]

-Xmx[unit]

这里的单位是内存初始化的单位支持g,m,k.g也就是GB,m也就是MB,k也就是KB。例如,我们可以设置最小启动内存为2GB,最大堆内存为5Gb,启动时候添加参数如下:

-Xms2G -Xmx5G

在Java 8 中MetaSpace的大没有设置,如果它打包了全局配置的最大值,JVM回去自动增涨它。如果要克服这个不稳定的问题,我们需要设置:

-XX:MaxMetaspaceSize=[unit]

这里MetaspaceSize表示我们配置给MetaSpace区的内存大小。在JVM设置中,内存第二个重要的地方是这是JVM年轻代gc的限制大小,默认gc的最小大小是1310MB,最大值则没有限制,设置方法如下:

-XX:NewSize=[unit]

-XX:MaxNewSize=[unit]

垃圾回收

为了有一个更加稳定的服务,选择一个合适的垃圾回收算法非常重要。JVM有许多种垃圾回收算法: Serial Garbage Collector Parallel Garbage Collector CMS Garbage Collector G1 Garbage Collector 选择哪一种实现,可以使用如下方式指定:

-XX:+UseSerialGC

-XX:+UseParallelGC

-XX:+USeParNewGC

-XX:+UseG1GC

GC日志

为了监控应用的监控情况,我们必须检查JVM的GC情况,最简单的方式将GC日志输出为便于阅读的形式,如何配置能够打印GC日志:

-XX:+UseGCLogFileRotation

-XX:NumberOfGCLogFiles=< number of log files >

-XX:GCLogFileSize=< file size >[ unit ]

-Xloggc:/path/to/gc.log

UseGCLogFileRotation指定了GC日志文件创建策略,就想log4j,sl4j一样。NumberOfGCLogFiles指定的是单个JVM应用在其生命周期中最多能创建GC日志文件的数量。GCLogFileSize指定GC日志单个文件体积最大值,loggc指定了日子文件的路径。

要说明的是,这里还有个JVM关于GC日志的参数,他们控制日志打印的时间,分别是:XX:+PrintGCTimeStamps和XX:+PrintGCDateStamps。

例如:我们要定义,GC日志数量最多100个文件,单个文件的最大体积是50M,日志打印的路径是/home/user/log,我们可以使用如下的配置:

-XX:+UseGCLogFileRotation

-XX:NumberOfGCLogFiles=10

-XX:GCLogFileSize=50M

-Xloggc:/home/user/log/gc.log

控JVM GC是需要一个单独的线程在后台执行的,他会消耗一部分的性能,这个是你要注意的地方。

处理内存溢出问题

一个非常大的问题是:JVM应用程序都会面临着内存溢出的问题,导致程序中途crash,这样的问题非常难以复现,以至于很难去找到问题的原因。

JVM提供了一些参数,保证程序在内存溢出的时候能够将当前的堆信息保存在磁盘上,以至于你事后能更具这个快照信息找到问题根源:

-XX:+HeapDumpOnOutOfMemoryError

-XX:HeapDumpPath=./java_pid.hprof

-XX:OnOutOfMemoryError="< cmd args >;< cmd args >"

-XX:+UseGCOverheadLimit

HeapDumpOnOutOfMemoryError表示dump堆信息到磁盘,HeapDumpPath是这只dump文件的文件路径和文件名,可以是任意的文件名,如果文件名中包含,会被替换成JVM应用的pid。OnOutOfMemoryError是在发送内存溢出的时候执行的命令,例如:我想在内存溢出的时候重启服务器。

-XX:OnOutOfMemoryError="shutdown -r"

UseGCOverheadLimit设置GC消失时间的百分比限制,如果GC时间过长,超过了这个限制,那么就会触发内存溢出错误。

32/64设置

JVM有一种运行模式:32模式,64模式。JVM默认是使用32模式运行。如果你要设置他,可以这样设置:

-d

java虚拟机-d参数配置_JVM虚拟机参数介绍相关推荐

  1. 多通道振弦传感器无线采集仪参数配置工具SETP简单介绍

    多通道振弦传感器无线采集仪参数配置工具SETP简单介绍 VS208/416/432 是以振弦.温度传感信号为主的多通道无线采集仪,并可扩展其它 模拟(电流.电压.电阻)信号和数字信号(RS485.RS ...

  2. realmeq参数配置详情_realmeq参数配置-realmeq手机性能规格详情

    realmeq这款手机是realmeq系列的第一代产品,在手机性价比方面来讲还是很不错的,下面就是小编为大家带来的realmeq最详细的参数性能配置消息,感兴趣的用户快来看看吧! 一.realmeq详 ...

  3. lgg7深度详细参数_MotoGStylus2021参数配置-MotoGStylus2021详细参数评测

    今天小编为大家带来最新的MotoGStylus2021参数配置,为用户带来最为详细的参数评测,对此感兴趣的小伙伴,快来看看吧. 一.参数配置 手机型号 MotoGStylus2021 手机外形 手机屏 ...

  4. vivoX30是android5的吗,vivox30参数配置-vivox30手机参数详细表

    vivox30是一款在2019年发布的5G手机,这款手机搭载的是三星Exynos 980处理器,在相机.续航方面都非常的强悍,那么vivox30参数配置如何呢?下面就让小编为大家详细的介绍一下吧,感兴 ...

  5. java虚拟机-d参数配置_Java虚拟机(五):常用JVM配置参数

    一.VM选项 - : 标准VM选项,VM规范的选项 -X: 非标准VM选项,不保证所有VM支持 -XX: 高级选项,高级特性,但属于不稳定的选项 二.Trace跟踪参数 -XX:+printGC:打印 ...

  6. jvm内存参数配置_JVM内存结构和Java内存模型

    一.JVM 首先看一张JVM结构图(某度找的) 主要看运行时数据区,里边有方法区,堆,java虚拟机栈,本地方法栈,程序计数器.其中方法区和堆是线程共享的,也是JVM进行垃圾收集的区域,java虚拟机 ...

  7. java xms xmx 默认值_JVM启动参数-Xmx的默认值是多少?

    1:JVM启动的时候,如果我不加-Xmx参数,可已分配给堆的最大内存是多少? 2:JDK1.5和JDK1.6等不同版本,Xmx参数的默认值是一样的吗?有什么区别? 3:xmx默认值与操作系统类型.位数 ...

  8. nginx-ingress设置日志格式-配置转发真实ip-超时参数配置-会话保持参数

    nginx-ingress设置日志格式-配置转发真实ip-白名单限制 参考官方文档 nginx-ingress官方文档 修改nginx-ingrss的configmap配置文件 apiVersion: ...

  9. mysql my.cnf参数配置_MySQLmy.cnf参数配置优化详解

    本配置文件针对Dell R710,双至强E5620.16G内存的硬件配置.CentOS 5.6 64位系统,MySQL 5.5.x 稳定版.适用于日IP 50-100w,PV 100-300w的站点, ...

最新文章

  1. Android新版NDK环境配置(免Cygwin)
  2. mysql jdbc tomcat_Tomcat+MySql+jdbc
  3. 湖北大学829数据库原理与c语言程序设计,2017年湖北大学教育学院829数据库原理与C语言程序设计考研强化模拟题...
  4. 无法获取到图片的宽高
  5. Shell until循环
  6. 华为笔记本软件商店_华为应用市场 PC 端体验:干净好用 - 华为
  7. CRTMPServer 在CentOS 64-bit下的编译(转)
  8. php 精度问题怎么解决,JavaScript 中精度问题以及解决方案
  9. 标准库函数和系统调用的区别
  10. 单机dnf正在连接服务器,dnf提示正在连接服务器解决方案
  11. Python3学习笔记_F(垃圾回收)
  12. 会员数据化运营应用场景与分析模型
  13. 银行卡四要素验证API接口用法简介
  14. metro样式开机启动菜单_如何在Windows 8中获取Metro风格的开始菜单和开始按钮
  15. ABeam Recruiting | ABeam旗下艾宾信息技术开发(大连)2023届校招正式开启
  16. mysql的groupby_MYSQL GROUP BY用法详解
  17. 爬虫:Robots协议
  18. 齐博php百度编辑器上传图片_齐博CMS整合百度编辑器上传附件的BUG以及解决办法...
  19. 【debug】汇编跳转指令: JMP、JECXZ、JA、JB、JG、JL、JE、JZ、JS、JC、JO、JP 等
  20. 软通动力华为java机考题库_软通动力Java考试题库.doc

热门文章

  1. 一个简化的插件框架c#
  2. 【Python 每天进步一点点】昨天把接口自动化测试框架部署在 测试环境 Linux 上,并且加入持续集成 Jenkins...
  3. 路飞学城Python-Day108
  4. 微信 input 照相机 呼出
  5. 【BZOJ1061/3265】[Noi2008]志愿者招募/志愿者招募加强版 单纯形法
  6. 20145228 《信息安全系统设计基础》第九周学习总结 (2)
  7. Windows下配置Apache服务器
  8. C#的解题思路(1):不重复随机数的产生问题
  9. [转载] python日期时间使用详解和定时器使用讲解
  10. [转载] Python开发系列课程(16) - 进程和线程