问题的提出,分析,请参考JNI——小心,内存怪兽出没
(简单的说起来,就是java进程占用了4G内存,但是折腾来折腾去,整个JVM的堆才100M上下,其余的内存凭空消失?刨根问底之后,原来是native heap占用了内存)
看完上面的问题,再来看解决方案:
目前看来,通过调整
JVM
参数来加大
GC
触发的频率是比较现实的一种方式。下面是一些分析过程:
一.
判断
Memonry
内存所属的区
通过
jconsole
可以看到
gc
信息,其中新生代的
scavenge
回收比较频繁,如果
Memonry
在这个区应该不存在长期得不到
gc
的情况
。由此推测
Memory
应该是在
Tenured/old
区
,而这个区的内存回收次数恰好非常少。
当然参数优化的目标,就是加大
old
区的
gc
频率。
二.
观察
JVM
的堆参数配置
1.
默认配置下,堆的分配起始值为
126M
,最大
1.8G
。
2.
观察
gc
前后
java
整个堆
的使用情况,
gc
前大概占
130M,
远未达到默认设置下的内存容量
3.
进一步查看
old
区的内存
,发现在
gc
前稳定在
90M
。
而默认参数初始分配
85M
,最大
1.3G
,显然很难触发到
GC
。
三.
解决问题
1.
首要的问题就是控制
JVM
对整个
heap
的大小分配:
-Xmx300M
指定
jvm
的最大
heap
大小
,
-Xms40M
指定
jvm
的最小
heap
大小
,
2.
在减小了整个堆的前提下,优化
NewRatio
这个参数
(
指定
jvm
中
Old Generation heap
size
与
New Generation
的比例
)
将默认的
NewRatio=2
更改为更符合业务实际内存使用比例的
-XX:NewRatio=1
减小了
old
区的比例,更容易触发
gc
。
3.
另外一个猜测的可行方案:(有待验证)
启用
jvm
中的
gc
参数
-XX:MaxGCPauseMillis=<nnn>
这个参数的大概含义就是,让每次
gc
的时间不超过参数
nnn
。那么
nn
减少的时候,必然会增加到
gc
的次数,来换取每次
gc
的速度。
通过下图的数据可以求出,每次
old
区的
gc
平均耗时
34.7ms
,
那么可以
-XX:MaxGCPauseMillis=28
,也许会增加到
gc
频率。
上述
4
个标红参数已经添加
,观察几天得到的结论是,比较好的解决了这个问题。
====================================================================
分割线:下面是调优后的观察:
可以看到整个内存呈波动结构,Java的堆从20M--》60M就触发一次old区的gc。
下面看看GC的情况: MarkSweep是old区的gc策略,大概2个小时会触发一次,每次耗时
3194/112=28.5178ms,不会对应用产生明显的停摆,并且也验证了MaxGCPauseMillis参数的作用
- 大小: 46.3 KB
- 大小: 49.2 KB
- 大小: 122.7 KB
- 大小: 61.5 KB
- 大小: 31 KB
- 大小: 3.9 KB
- 大小: 10.1 KB
分享到:
相关推荐
11. **JVM内存泄漏**:内存泄漏可能导致内存占用持续增长,最终导致系统崩溃。通过分析GC日志、使用内存分析工具(如MAT, VisualVM等)可以定位和修复内存泄漏问题。 12. **并发与多线程**:JVM提供了丰富的并发API...
### JVM相关的常见面试问题知识点汇总 #### 1. 什么是JVM? - **定义**: JVM全称Java Virtual Machine,即Java虚拟机,是Java程序运行的底层平台。 - **作用**: 它为Java应用程序提供了一个运行环境,可以执行Java...
5. **JVM调优**:包括堆内存大小调整、栈内存大小调整、垃圾回收器选择、并发参数设置等。例如,通过-Xms和-Xmx设置堆内存初始值和最大值,通过-XX:+UseG1GC选择垃圾收集器,通过-XX:ParallelGCThreads设置并行收集...
这可能导致内存占用持续增长,直至耗尽。识别和修复内存泄露需要理解对象的生命周期、GC的工作方式以及使用工具如VisualVM、JProfiler进行内存分析。 JVM调优是一项复杂的工作,包括调整堆大小、新生代和老年代的...
commvault的api接口的postman导入文档
"基于模型预测控制的无人驾驶车辆运动学验证:Simulink与Carsim仿真结果对比与模型解析",无人驾驶车辆模型预测控制 自动驾驶 汽车运动学模型验证 simulink和Carsim仿真结果对比 1.基于matlab2021a和Carsim2020 2.提供模型相关的说明文档 ,核心关键词:无人驾驶车辆模型预测控制; 自动驾驶; 汽车运动学模型验证; simulink; Carsim仿真结果对比; MATLAB 2021a; Carsim 2020; 模型说明文档。,基于Matlab与Carsim的无人驾驶车辆模型预测控制与仿真结果对比分析
基于QRBiGRU双向门控循环单元的复杂时间序列预测模型研究——Matlab分位数回归与多图多指标评估模型优化案例。,Matlab实现基于QRBiGRU分位数回归双向门控循环单元的时间序列区间预测模型: 1.Matlab实现基于QRBiGRU分位数回归双向门控循环单元的时间序列区间预测模型 2.多图输出、多指标输出(MAE、RMSE、MSE、R2),多输入单输出,含不同置信区间图、概率密度图; 3.data为数据集,功率数据集,用过去一段时间的变量,预测目标,目标为最后一列,也可适用于负荷预测、风速预测;MainQRBiGRUTS为主程序,其余为函数文件。 BiGRU分位数预测得到不同置信区间下的风电功率结果如图所示。 可以看出,不同置信度条件下的预测区间与风电功率实际值的波动大致相同,表明本文的方法能够准确预测风电功率变化,此外在实际值变化剧烈的地方置信区间越宽,表明预测可信度变低,这也与实际情况相符合。 对比预测未来不同时间步的预测区间,预测的误差在增大。 根据BiGRU分位数预测未来90min后的结果,采用核密度估计,生成风电功率的概率密度曲线。 如图所示。 可以看到,风电功率实
MATLAB多相材料相场断裂分析:纤维基体界面三相的载荷位移曲线可视化研究,matlab多相材料相场断裂,图中包含纤维基体界面三相,并输出载荷位移曲线。 paraview可视化 ,关键词:Matlab;多相材料;相场断裂;纤维基体界面三相;载荷位移曲线;Paraview可视化,"MATLAB相场断裂分析:多相材料中纤维基体界面的三维可视化与载荷位移曲线输出"
基于MATLAB的FFT滤波技术:实现波形数据谐波分析、频段清除与提取的全面解决方案,基于matlab的FFT滤波,可以实现对simulink模型中示波器的波形数据或者外部mat数据、csv数据进行谐波分析(FFT)和自定义频段清除,对已有数据特定频段的数据进行提取也可以。 优点是滤波前后波形无相位滞后,幅值衰减可补偿,不足之处在于不支持实时滤波。 图一是将图二的信号(含三次谐波)进行140hz-150hz频段谐波清除前后的时域及频谱图,图3是对给定数据进行特定频段信号提取。 ,基于MATLAB的FFT滤波; 谐波分析; 频段清除; 波形无相位滞后; 幅值衰减可补偿; 数据特定频段提取,MATLAB的FFT滤波技术:数据频谱分析与自定义频段谐波清除与提取
c++编译器,适用于IDE没有自带编译器的
2020年09月Scratch一级理论B
"Comsol连续体束缚态BIC探究:一维光栅与二维光子晶体板的能带与Q因子计算",Comsol连续体中的束缚态BIC。 涉及能带计算与Q因子计算,包含一维光栅和二维光子晶体板。 注: 不包含拓扑荷计算。 ,核心关键词:Comsol连续体;束缚态BIC;能带计算;Q因子计算;一维光栅;二维光子晶体板。,《Comsol连续体束缚态BIC能带计算与Q因子探索》
MAKINO系列机床操作与维修设定指南:PRO3操作、S系列使用、培训课程及安装手册,MAKINO 牧野 PRO3 维修设定操作 A55 PRO3操作说明书 日文.pdf A55卧加工作台旋转后加工原点计算.xlsx A61_SPECS.pdf MAKINO PRO3 V55-Operation-Guide 英文.pdf MAKINO S 系列PRO5 使用说明书PIC-Makino-S33-S56-0209.pdf MAKINO 培训课程Schulung_英文.pdf MAKINO-F3F5安装手册MANUAL 英文.pdf Makino-GF8主轴头取汲说明书.pdf MAKINO-PRO3-ProgManua英文l.pdf PIC-Makino-a61-0209.pdf V33 V55 -Series-Operation-485a-9911e英文.pdf V55-Maintenance-Guide-4v2b1563英文.pdf 牧野J5机床说明书J5_OPERATION_中文.pdf 牧野Professional5使用说明书摘要(a1系列 a51 a61 a71 a81 a82
2022年7月信息技术服务管理体系
2019年11月职业健康安全管理体系
"Comsol一维光子晶体ZAK相位计算方法详解:含MPH文件与MATLAB代码的实践指南",Comsol一维光子晶体zak相位计算,包含mph文件和matlab代码。 ,核心关键词:Comsol一维光子晶体; zak相位计算; mph文件; matlab代码; 计算过程。,基于Comsol的一维光子晶体:Zak相位计算与mph及Matlab代码解析
SWOT分析培训
GBT27053复习备考
"Java开源海外跨境电商购物商城源码与TikToK内嵌商城系统源码:多语言支持,全球市场触手可及的在线外贸商城解决方案",Java开源海外跨境电商购物商城源码,TikToK内嵌商城系统源码,外贸商城在线,附带搭建教程 提供搭建部署文档、提供一年更新服务,协助资料准备,服务器域名等第三方资料自备 二十一种语言,可以做很多国家的市场,支持商家入驻,多店铺等等,还有币可以切美元USD或越南盾VND 访问网站:tiktok898点com 服务器配置:内存要高:最低:8H16G 服务器系统:ubuntu 20.04 ,关键词:Java开源; 跨境电商; 购物商城源码; TikToK内嵌商城; 外贸商城; 搭建教程; 部署文档; 更新服务; 商家入驻; 多店铺; 货币切换; 美元USD; 越南盾VND; 网站访问; 服务器配置; 高内存; 8H16G; ubuntu 20.04; 资料准备; 第三方资料。,海外多语种跨境电商平台源码:TikToK内嵌商城系统,支持商家入驻与货币切换
Java项目博物馆管理系统