jvm一般相关配置OutOfMemoryError关参数配置解释
一般运行java应用都会根据实际情况设置一些jvm相关运行参数 特别是有关内存和oom溢出等参数,方便后续问题定位和解决
如常用的以下配置
nohup java -Xms256m -Xmx24g -Xmn8g -verbose:gc -XX:+PrintGCDateStamps -XX:+PrintGCDetails -Xloggc:log/gc-%t.log -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=2 -XX:GCLogFileSize=100M -XX:+CrashOnOutOfMemoryError -jar app.jar >/dev/null 2>&1 &
具体参数说明参考官方文档 https://docs.oracle.com/javase/7/docs/technotes/tools/windows/java.html
-verbose:gc 打印每次垃圾回收事件信息 和 -XX:+PrintGC 效果一样,官方文档中有说明:两者功能一样,都用于垃圾收集时的信息打印。但是也有不同点:
-verbose:gc 是 稳定版本
XX:+PrintGC 是 非稳定版本
Xms256m 配置初始堆大小 256m
-Xmx24g 最大堆大小 24g
-Xmn8g 年轻代大小 8g
-XX:+PrintGCDateStamps 此参数主要定义GC Log 的时间戳信息,通常以“基准时间”形式打印。
2022-06-07T08:09:50.902+0800: 51117.527: [GC (Allocation Failure) [PSYoungGen: 1195854K->17659K(1205248K)] 1288769K->110574K(1311744K), 0.0581524 secs] [Times: user=0.04 sys=0.00, real=0.05 secs]
-XX:+PrintGCDetails 打印gc详细信息 格式如下
[GC (Allocation Failure) [PSYoungGen: 1195854K->17659K(1205248K)] 1288769K->110574K(1311744K), 0.0581524 secs]
Xloggc:log/gc-%t.log 定义GC Log 的存储路径以及所输出的文件名称。
-XX:+UseGCLogFileRotation 定义GC Log 的滚动功能,需要进行开启或关闭,其通常基于Xloggc配置一起使用
-XX:NumberOfGCLogFiles=2 主要定义滚动日志文件的个数
对应的日志文件 命名策略为:<filename>.0、<filename>.1、 ... 、 <filename>.n-1等
-XX:GCLogFileSize=100M 定义滚动日志文件的大小
当前写日志文件大小超过该 参数值时,日志将写入下一个文件,依次类推。
-XX:+CrashOnOutOfMemoryError
# -XX:HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=dump.hprof 发生oom自动生成堆栈信息便于后续分析原因 # -XX:OnOutOfMemoryError=/script/restart.sh 发生oom时调用脚本重启应用程序 # -XX:+ExitOnOutOfMemoryError 发生oom立即退出,无任何信息文件生成,不建议使用 # -XX:+CrashOnOutOfMemoryError 发生oom后立即退出,JVM还会生成文本和二进制崩溃文件
重点有关OutOfMemoryError 配置说明如下
JVM提供了有用的参数来处理 OutOfMemoryError 。在本文中,我们将重点介绍这些JVM参数。在排除OutOfMemoryError故障时,它可能会很方便。这些JVM参数是:
1. -XX:HeapDumpOnOutOfMemoryError-XX:HeapDumpPath
2. -XX:OnOutofmemoryError
3. -XX:+ExitOnOutOfMemoryError
4. -XX:+CrashOnOutOfMemoryError
让我们在本文中详细讨论这些JVM参数。
-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath
堆转储dump文件基本上是内存的快照。它包含有关内存中存在的对象、这些对象中存在的实际数据以及这些对象的引用的详细信息。堆转储是解决内存问题的重要工件。
-XX:+HeapDumpOnOutOfMemoryError-XX:HeapDumpPath={HEAP-DUMP-FILE-PATH}
-XX:+HeapDumpOnOutOfMemoryError-XX:HeapDumpPath=/crasks/my-heap-dump.hprof
在’ -XX:HeapDumpPath '中,需要指定存储堆转储的文件路径。
当您传递这两个JVM参数时,当抛出OutOfMemoryError时,堆转储将被自动捕获并写入指定的文件路径。
一旦捕获了堆转储,就可以使用诸如HeapHero、Eclipse MAT之类的工具来分析堆转储。
-XX:OnOutOfMemoryError
-XX:OnOutOfMemoryError=/scripts/restart-myapp.sh
当您传递此参数时,JVM将调用“/scripts/restart-myapp.sh“,每当抛出OutOfMemoryError时编写脚本。在这个脚本中,您可以编写代码来优雅地重新启动应用程序。
-XX:+CrashOnOutOfMemoryError
Aborting due to java.lang.OutOfMemoryError: GC overhead limit exceeded
#
# A fatal error has been detected by the Java Runtime Environment:
#
# Internal Error (debug.cpp:308), pid=26064, tid=0x0000000000004f4c
# fatal error: OutOfMemory encountered: GC overhead limit exceeded
#
# JRE version: Java(TM) SE Runtime Environment (8.0_181-b13) (build 1.8.0_181-b13)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (25.181-b13 mixed mode windows-amd64 compressed oops)
# Failed to write core dump. Minidumps are not enabled by default on client versions of Windows
#
# An error report file with more information is saved as:
# C:\workspace\tier1app-svn\trunk\buggyapp\hs_err_pid26064.log
#
# If you would like to submit a bug report, please visit:
# http://bugreport.java.com/bugreport/crash.jsp
-XX:+ExitOnOutOfMemoryError
jvm一般相关配置OutOfMemoryError关参数配置解释相关推荐
- realmeq参数配置详情_realmeq参数配置-realmeq手机性能规格详情
realmeq这款手机是realmeq系列的第一代产品,在手机性价比方面来讲还是很不错的,下面就是小编为大家带来的realmeq最详细的参数性能配置消息,感兴趣的用户快来看看吧! 一.realmeq详 ...
- 【Android Gradle 插件】DexOptions 配置 ③ ( additionalParameters 属性配置 | 多 dex 参数配置 | --multi-dex 参数 )
文章目录 一.dx --multi-dex 参数 1.--multi-dex 参数简介 2.--multi-dex 参数配置示例 二.BuildType#multiDexEnabled 属性配置多 d ...
- 【Android Gradle 插件】AaptOptions 配置 ② ( additionalParameters 附加参数配置 | --rename-manifest-package 配置 )
文章目录 一.--rename-manifest-package 重写 AndroidManifest 中的包名 Android Plugin DSL Reference 参考文档 : 文档主页 : ...
- mysql my.cnf参数配置_MySQLmy.cnf参数配置优化详解
本配置文件针对Dell R710,双至强E5620.16G内存的硬件配置.CentOS 5.6 64位系统,MySQL 5.5.x 稳定版.适用于日IP 50-100w,PV 100-300w的站点, ...
- oracle 查看内存参数配置,Oracle内存参数配置及版本问题
Oracle的内存配置与Oracle性能息息相关.从总体上讲,可以分为两大块:共享部分(主要是SGA)和进程独享部分(主要是PGA).在 32 位操作系统下 的Oracle版本,不时有项目反馈关于内存 ...
- sql查询mysql参数配置_查询参数配置
示例 请求示例 http(s)://rds.aliyuncs.com/?Action=DescribeParameters &DBInstanceId=rm-uf6wjk5xxxxxxx &a ...
- JVM优化系列-详解JDK1.8 Metaspace 参数配置
导语 在JVM中除了有堆内存参数配置以外,还有一些其他内存例如方法区.线程栈直接内存等等.他们与堆内存来说是相对比较独立的内存空间.与堆内存相比较这些内存与应用程序本身的关系不大,但是如果将其放到 ...
- VS系列多通道振弦传感器无线采发仪与参数配置工具连接
VS101~VS432 设备配备了专门的参数配置工具 SETP 来完成设备工作参数的查看和修改工作. 连接前的准备工作 (1)数据接口与计算机连接 使用标配的通讯线与计算机 RS232 接口连接.若需 ...
- CC00038.kafka——|Hadoopkafka.V23|——|kafka.v23|消费者拦截器参数配置|
一.消费者拦截器参数配置:消费者参数配置补充 配置项 说明 bootstrap.servers 建立到Kafka集群的初始连接用到的host/port列表. 客户端会使用这里指定的所有的host/po ...
最新文章
- 通过例子学Solidity[注释翻译]
- 大话设计模式—责任链模式
- [Java基础]Map集合基础
- 小白来学C语言之字符串与指针
- idea用maven启动zookeeper源码
- Zabbix官方文件Zabbix图形树
- h5 监听浏览器被切换到后台或者手机锁屏再次唤起事件
- [转]浅谈算法和数据结构: 八 平衡查找树之2-3树
- Java Web 开发书籍
- Mac苹果电脑加密视频播放器使用教程
- 爬虫Requests库学习-小猪短租网
- java人机猜拳模块流程图_基于java实现人机猜拳游戏
- Android平台下使用BingMaps地图
- 大名鼎鼎的 Linux —— 进程,线程,协程
- html 鼠标图标做成动画效果,7 个让人惊叹的 HTML5 鼠标动画
- 麒麟v10 sp1 桌面系统分辨率调整
- 蓝桥杯--输出既是回文又是质数的数
- 微信jssdk图片上传给服务器,使用微信JSSDK进行图片选择和上传
- rk3288 mmap原理学习
- ThoughtWorks全球CEO郭晓谈软件人才的招聘与培养
热门文章
- vue3+ts 项目空格和回车代码出现红色波浪线
- 短信验证码是什么?在网站中起到什么作用?
- (科软)高级软件工程课程总结
- 计算机硬件和软件英语,计算机组成与设计:硬件/软件接口(英文版 原书第5版 ARM版)...
- 江苏单招C语言试题,江苏对口单招考试大纲-计算机类专业综合理论
- 深度学习-根据日志画loss-acc折线图
- Redis学习记录之Transaction简析(十九)
- 迅雷百度网盘不能下载资源 办法总比困难多
- html基础实验的实验原理,实验1HTML基本标记的练习
- Silverlight开发历程—(绘制放射渐变图形)