JVM内存随着服务器内存的升高而升高问题排查

一、故障描述

公司测试环境和线上环境,都会有:JVM内存随着服务器内存的升高而升高 这种问题

二、排查

1、linux服务器上使用htop查看java项目内存占比,给最大最小推内存300m,但是实际上超出一倍

在这里插入图片描述

2、排查方案

a、通过后面的学习得知jvm内存有堆内存和堆外内存,一开始不懂,直接上手jvisualVm,使用

jmap -dump:live,format=b,file=UserApp.hpref pid

生成服务器上项目的堆的hpref。在jvisualVm上分析的时候,看到堆内存实际上占的很少,很不理解,按照道理应该占的很大才对:
在这里插入图片描述
所以我猜测应该不是堆内存引起的,但是不知道到底是哪里导致了内存飙升,因为服务器启动项目时没有加入-XX:NativeMemoryTracking=detail,所以也无法使用jcmd查询,这正是关键步骤所在,在查询问题的2,3天里面,如果能够从这里出发,问题也可以解决

b、参考博客:

https://zhuanlan.zhihu.com/p/432258798

在这边博客里面,明细写了各种查询内存高的手段,非常好用,其中一条思路:

jcmd pid VM.native_memory detail scale=MB > temp.txt

这条命令可以分析VM内部内存使用情况;但是我发现使用这种命令没有生效,生成的文件里面老是报错:命令不生效,查找了chatgpt我才知道,正确的命令是:

java -Xms500m -Xmx500m -XX:NativeMemoryTracking=detail yourApp.jar

我之前写的是:

java -jar  -Xms500m -Xmx500m -XX:NativeMemoryTracking=detail  yourApp.jar

问题原因!!!:-jar命令前面写jvm参数,而不是后面!!!这是问题的关键;使用正确启动命令之后,我的temp.txt里面的项目的占用内存也正常了。。。

c、思考

还是得多学习,多看博客,不能钻牛角尖,不能按照自己的思维定式走,惯性思维有时候很害人

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

小程序-上拉触底

1.概念 2.使用与监听 3.配置距离

记录 | docker内执行apt update报错GPG error

1. 执行 sudo apt-get update 命令时遇到这个错误,是服务器没有这个公钥的意思 rootadmin:~# sudo apt-get update Get:1 https://download.docker.com/linux/ubuntu focal InRelease [36.2 kB] Err:1 https://download.docker.com/linux/ubuntu focal InRelease T…

01_02_mysql09_MySQL的数据目录

MySQL的数据目录 学习再总结宋红康老师课程内容1.MySQL8的主要目录结构 安装好MySQL8之后,查看如下的目录结构 find / -name mysql1.1数据库文件的存放路径 MySQL数据库文件的存放路径:/var/lib/mysql/ 1.2相关命令目录 相关命令目录:/u…

计算机网络面经_体系结构一文说清

编辑:平平无奇的羊 目录 基础 1. 计算机网络结构体系 三种模型之间的区别: 如何背诵: 进阶 OSI七层模型: TCP/IP四层模型: TCP/IP五层模型 总结 字节实习生为大家带来的是计算机网络面经系列博文,由浅…

【Flink数据传输(一)】NetworkStack架构概述:实现tm之间的数据交换

文章目录 1. NetworkStack整体架构2. StreamTask内数据流转过程 NetworkStack提供了高效的网络I/O和反压控制 除了各个组件之间进行RPC通信之外,在Flink集群中TaskManager和TaskManager节点之间也会发生数据交换,尤其当用户提交的作业涉及Task实例运行在…

c编译器学习07:minilisp编译器改造(debug模式支持调试)

问题 原版的minilisp编译器不支持argv输入测试,不方便单步调试。 代码改造目标是既不改变原有程序的各种功能, 又能支持个人习惯的vs单步debug模式。 CMakeLists.txt变更 定义DEBUG宏 解决单步调试源码定位偏差问题 cmake_minimum_required(VERSION …

springboot邮箱注册

1.准备工作 操作之前准备两个邮箱 我准备了网易邮箱和QQ邮箱,网易邮箱用来发送验证码,QQ邮箱用来做注册(希望大家和我一样,不然可能会出错 ) 发送验证码的邮箱需要开启一些设置,否则不…

windows server2008前后端项目部署

目录 一.部署环境 准备一个windows server 2008的镜像 准备jdk1.8 准备tomcat服务器 准备mysql数据库 二.部署步骤 1.1新建虚拟机 1.2打开远程 连接宿主机远程桌面 1.3下载安装jdk 修改path 1.4安装tomcat 1.5.安装mysql mysql安装成功 把war包丢到tomcat webapp里面去…

Selenium IDE插件录制网页,解放双手

1、 国内下载地址 https://www.crx4chrome.com/crx/77585/ ,这个网络正常基本可以下载,目前最新版本是3.17.2。 点击Crx4Chrome下载。下载后的文件名称是:mooikfkahbdckldjjndioackbalphokd-3.17.2-Crx4Chrome.com.crx。 2、 安装 直接打开…

【MySQL】数据库概述

目录 一、为什么使用数据库? 二、数据库与数据库管理系统 2.1 相关概念 2.2 两者关系 三、 MySQL介绍 四、 RDBMS和非RDBMS 4.1 关系型数据库(RDBMS) 4.2 非关系型数据库(非RDBMS) 五、关系型数据库设计规则 …

挑战杯 基于卷积神经网络的乳腺癌分类 深度学习 医学图像

文章目录 1 前言2 前言3 数据集3.1 良性样本3.2 病变样本 4 开发环境5 代码实现5.1 实现流程5.2 部分代码实现5.2.1 导入库5.2.2 图像加载5.2.3 标记5.2.4 分组5.2.5 构建模型训练 6 分析指标6.1 精度,召回率和F1度量6.2 混淆矩阵 7 结果和结论8 最后 1 前言 &…

QT问题 打开Qt Creator发现没有菜单栏

之前不知道按了什么快捷键,当我再次打开Qt Creator时发现菜单栏消失啦 找了许多原因发现:安装有道词典的快捷键Ctrl Alt m 与Qt Creator里的快捷键冲突导致菜单栏被莫名其妙的隐藏 解决方法: 1找到有道词典快捷键 2再次按快捷键 Ctrl Alt m就可以重新显示菜单栏