大内存生产环境tomcat-jvm配置实践

news2025/7/15 19:04:37

话不多讲,奉上代码,分享经验,交流提高!

64G物理内存,8核CPU生产环境tomcat-jvm配置如下:

JAVA_OPTS=-server -XX:MaxMetaspaceSize=4G -XX:ReservedCodeCacheSize=2G 
-XX:+UseG1GC -Xms48G -Xmx48G -XX:MaxGCPauseMillis=200 
-XX:G1HeapRegionSize=8M -XX:InitiatingHeapOccupancyPercent=45 
-XX:+HeapDumpOnOutOfMemoryError -XX:-OmitStackTraceInFastThrow 
-Doracle.jdbc.useNio=false -Dsun.zip.disableMemoryMapping=true 
-Dorg.apache.el.parser.COERCE_TO_ZERO=true 
-Djgroups.bind_addr=0.0.0.0

配置参数逐项说明

编号配置参数参数含义及备注说明
1-server

启用JVM的“服务器模式”优化,针对长时间运行的应用进行性能优化(如更高的吞吐量、更积极的即时编译)。适用于生产环境中的服务端应用,一定要作为第一个参数。

2-XX:MaxMetaspaceSize=4G​​​​设置Metaspace(元数据区,替代永久代)的最大大小为4GB,防止类元数据无限制增长导致内存溢出。​​注​​:Metaspace存放类定义、方法元数据等信息,默认无上限,需监控避免泄漏。
3

-XX:ReservedCodeCacheSize=2G

设置JIT编译后的本地代码缓存区大小为2GB,避免大型应用因代码缓存不足导致性能下降。注​​:代码缓存满时,JIT可能停止编译,影响性能。
4-XX:+UseG1GC​​启用G1(Garbage-First)垃圾收集器,适合大堆内存(如48G)和低延迟场景。​特点​​:分区域回收,优先处理垃圾最多的区域,减少停顿时间。
5-Xms48G -Xmx48G​​​​设置JVM堆内存的初始值(Xms)和最大值(Xmx)均为48GB,避免堆动态扩容带来的性能波动。生产建议​​:通常建议两者设为相等,避免堆大小调整导致GC频繁。
6-XX:MaxGCPauseMillis=200​​​​设定G1垃圾收集器的目标最大停顿时间为200毫秒,JVM会尽量调整GC策略以满足该目标。权衡​​:过低的设置可能导致更频繁的GC,影响吞吐量。
7-XX:G1HeapRegionSize=8M​​​​设置G1垃圾收集器的内存区域(Region)大小为8MB,较大的Region可能减少内存碎片。
​​建议​​:通常根据堆大小自动计算,显式设置需结合应用特性。
8-XX:InitiatingHeapOccupancyPercent=45​​​​当堆内存使用率达到45%时,启动G1的并发标记周期(Concurrent GC)。
​​目的​​:尽早回收垃圾,避免堆占用过高时触发Full GC。
9-XX:+HeapDumpOnOutOfMemoryError​​​​在发生内存溢出(OOM)时自动生成堆转储文件(java_pid<pid>.hprof),用于事后分析内存泄漏。​​文件位置​​:默认在JVM工作目录,可通过-XX:HeapDumpPath指定路径。
10-XX:-OmitStackTraceInFastThrow​​​​禁用JVM对频繁抛出异常的堆栈轨迹优化,确保所有异常都有完整的堆栈信息。​​背景​​:JVM默认会省略高频异常(如NullPointerException)的堆栈,可能影响调试。
11-Doracle.jdbc.useNio=false​​禁用Oracle JDBC驱动的NIO(非阻塞IO)模式,强制使用传统IO。​​适用场景​​:某些旧版本驱动或网络环境下NIO可能导致问题。
12-Dsun.zip.disableMemoryMapping=true​​​​禁止使用内存映射文件处理ZIP/JAR,改用流式读取,避免内存映射导致虚拟内存地址耗尽。​​典型问题​​:处理大量JAR文件时可能出现的OutOfMemoryError: Map failed。
13-Dorg.apache.el.parser.COERCE_TO_ZERO=true​​​​强制将空字符串转换为数值0(例如,表单提交的空字段解析为0),避免EL表达式类型转换异常。​​示例​​:${param.value} 若为空会返回0而非报错。
14-Djgroups.bind_addr=0.0.0.0​​设置JGroups(集群通信库)绑定所有可用网络接口(0.0.0.0),确保集群节点间正常通信。​​注​​:需确保防火墙开放相关端口。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2343158.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

代码随想录算法训练营第60期第十七天打卡

今天我们继续进入二叉树的下一个章节&#xff0c;今天的内容我在写今天的博客前大致看了一下部分题目难度不算大&#xff0c;那我们就进入今天的题目。 第一题对应力扣编号为654的题目最大二叉树 这道题目的坑相当多&#xff0c;我第一次题目没有看明白就是我不知道到底是如何…

SOC估算:开路电压修正的安时积分法

SOC估算&#xff1a;开路电压修正的安时积分法 基本概念 开路电压修正的安时积分法是一种结合了两种SOC估算方法的混合技术&#xff1a; 安时积分法&#xff08;库仑计数法&#xff09; - 通过电流积分计算SOC变化 开路电压法 - 通过电池电压与SOC的关系曲线进行校准 方法原…

使用 SSE + WebFlux 推送日志信息到前端

为什么使用 SSE 而不使用 WebSocket, 请看 SEE 对比 Websocket 的优缺点。 特性SSEWebSocket通信方向单向&#xff08;服务器→客户端&#xff09;双向&#xff08;全双工&#xff09;协议基于 HTTP独立协议&#xff08;需 ws:// 前缀&#xff09;兼容性现代浏览器&#xff08…

二叉树的遍历(广度优先搜索)

二叉树的第二种遍历方式&#xff0c;层序遍历&#xff0c;本质是运用队列对二叉树进行搜索。 层序遍历是指将二叉树的每一层按顺序遍历&#xff0c;通过队列实现就是先将根节点push入队&#xff0c;统计此时的队列中的元素数量size&#xff0c;将size元素全部pop出去&#xff0…

2025年计算机视觉与智能通信国际会议(ICCVIC 2025)

2025 International Conference on Computer Vision and Intelligent Communication 一、大会信息 会议简称&#xff1a;ICCVIC 2025 大会地点&#xff1a;中国杭州 收录检索&#xff1a;提交Ei Compendex,CPCI,CNKI,Google Scholar等 二、会议简介 2025年计算机视觉与智能通…

手工收集统计信息

有时想对某些表收集统计信息 CREATE OR REPLACE PROCEDURE GATHER_STATS ASDECLAREV_SQL1 VARCHAR(1000);--表游标CURSOR C1 ISSELECT (SELECT USER) AS TABLE_OWNER,TABLE_NAMEFROM USER_TABLES; --可以在这里加过滤条件--索引游标CURSOR C2 ISSELECT TABLE_OWNER,INDEX_NAM…

flume整合Kafka和spark-streaming核心编程

flume整合Kafka 需求1&#xff1a;利用flume监控某目录中新生成的文件&#xff0c;将监控到的变更数据发送给kafka&#xff0c;kafka将收到的数据打印到控制台&#xff1a; 1.查看topic 2.编辑flume-Kafka.conf&#xff0c;并启动flume 3.启动Kafka消费者 4.新增测试数据 5.查…

EDI 如何与 ERP,CRM,WMS等系统集成

在数字化浪潮下&#xff0c;与制造供应链相关产业正加速向智能化供应链转型。传统人工处理订单、库存和物流的方式已难以满足下单客户对响应速度和数据准确性的严苛要求。EDI技术作为企业间数据交换的核心枢纽&#xff0c;其与ERP、CRM、WMS等业务系统的深度集成&#xff0c;成…

面试踩过的坑

1、 “”和equals 的区别 “”是运算符&#xff0c;如果是基本数据类型&#xff0c;则比较存储的值&#xff1b;如果是引用数据类型&#xff0c;则比较所指向对象的地址值。equals是Object的方法&#xff0c;比较的是所指向的对象的地址值&#xff0c;一般情况下&#xff0c;重…

多物理场耦合低温等离子体装置求解器PASSKEy2

文章目录 PASSKEy2简介PASSKEY2计算流程PASSKEy2 中求解的物理方程电路模型等离子体模型燃烧模型 PASSKEy2的使用 PASSKEy2简介 PASSKEy2 是在 PASSKEy1 的基础上重新编写的等离子体数值模拟程序。 相较于 PASSKEy1&#xff0c; PASSKEy2 在具备解决低温等离子体模拟问题的能力…

视频噪点多,如何去除画面噪点?

你是否遇到过这样的困扰&#xff1f;辛辛苦苦拍摄的视频&#xff0c;导出后却满屏 “雪花”&#xff0c;夜景变 “噪点盛宴”&#xff0c;低光环境秒变 “马赛克现场”&#xff1f; 无论是日常拍摄的vlog、珍贵的家庭录像&#xff0c;还是专业制作的影视作品&#xff0c;噪点问…

09前端项目----分页功能

分页功能 分页器的优点实现分页功能自定义分页器先实现静态分页器调试分页器动态数据/交互 Element UI组件 分页器的优点 电商平台同时展示的数据很多&#xff0c;所以采用分页功能实现分页功能 Element UI已经有封装好的组件&#xff0c;但是也要掌握原理&#xff0c;以及自定…

第十二届蓝桥杯 2021 C/C++组 直线

目录 题目&#xff1a; 题目描述&#xff1a; 题目链接&#xff1a; 思路&#xff1a; 核心思路&#xff1a; 两点确定一条直线&#xff1a; 思路详解&#xff1a; 代码&#xff1a; 第一种方式代码详解&#xff1a; 第二种方式代码详解&#xff1a; 题目&#xff1a;…

《Piper》皮克斯技术解析:RIS系统与云渲染如何创造奥斯卡级动画短片

本文由专业专栏作家 Mike Seymour 撰写&#xff0c;内容包含非常有价值的行业资讯。 译者注 《Piper》是皮克斯动画工作室的一部技术突破性的短片&#xff0c;讲述了一只小鸟在海滩上寻找食物并面对自然挑战的故事。它不仅凭借其精美的视觉效果和细腻的情感表达赢得了2017年奥…

Java在excel中导出动态曲线图DEMO

1、环境 JDK8 POI 5.2.3 Springboot2.7 2、DEMO pom <dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>5.2.3</version></dependency><dependency><groupId>commons…

Kotlin Multiplatform--02:项目结构进阶

Kotlin Multiplatform--02&#xff1a;项目结构进阶 引言正文 引言 在上一章中&#xff0c;我们对 Kotlin Multiplatform 项目有了基本的了解&#xff0c;已经可以进行开发了。但我们只是使用了系统默认的项目结构。本章介绍了如何进行更复杂的项目结构管理。 正文 在上一章中&…

代码随想录算法训练营第五十八天 | 1.拓扑排序精讲 2.dijkstra(朴素版)精讲 卡码网117.网站构建 卡码网47.参加科学大会

1.拓扑排序精讲 题目链接&#xff1a;117. 软件构建 文章讲解&#xff1a;代码随想录 思路&#xff1a; 把有向无环图进行线性排序的算法都可以叫做拓扑排序。 实现拓扑排序的算法有两种&#xff1a;卡恩算法&#xff08;BFS&#xff09;和DFS&#xff0c;以下BFS的实现思…

linux ptrace 图文详解(七) gdb、strace跟踪系统调用

目录 一、gdb/strace 跟踪程序系统调用 二、实现原理 三、代码实现 四、总结 &#xff08;代码&#xff1a;linux 6.3.1&#xff0c;架构&#xff1a;arm64&#xff09; One look is worth a thousand words. —— Tess Flanders 相关链接&#xff1a; linux ptrace 图…

【前端】ES6 引入的异步编程解决方案Promise 详解

Promise 详解 1. 基本概念 定义&#xff1a;Promise 是 ES6 引入的异步编程解决方案&#xff0c;表示一个异步操作的最终完成&#xff08;或失败&#xff09;及其结果值。核心作用&#xff1a;替代回调函数&#xff0c;解决“回调地狱”问题&#xff0c;提供更清晰的异步流程控…

const(C++)

打印出来的结果是 a是12 *p是200 const修饰指针 const修饰引用