linux主机java应用的内存监控

七个案例教会你编写Shell 脚本 CentOS 7 系统运维脚本摘要 1. Nginx 自动安装脚本 创建 Shell 脚本自动下载编译安装 Nginx 1.17.8 检查 root 权限并安装依赖(gcc、pcre-devel等) 创建专用运行用户 admin 提高安全性 多线程编译优化安装效率 包含完善错误检测机制,安装失败立即终止 2. 端口连通性检测脚本 通过 telnet 测试指定 IP 和端口连通性 支持 TCP 端口检测(如 5522、SSH 22 端口) 使用子 shell 和临时文件处理测试结果 输出明确状态(开放/ 阅读详情
东拉西扯的前奏:做java开发的程序员都知道,在java里不需要人工回收对象。所有清理对象的工作都由JVM来完成。
这一下子不得了,好多没有受过伤害的年轻人,就肆意妄为的创建对象,不分大小和能否复用,不分创建地点风水是否合时宜。
随手拈来,顺手牵去。经常导致程序部署到服务器后,发生内存溢出又或者是内存泄露的问题。而这类问题本身又不易立即显现,总是直到分配给程序的内存用尽后,才犹抱琵琶半遮面,崭露头角,让我们这些维护系统的人防不胜防,叫苦不堪。所以在程序部署到服务器以后的一段时间,监控程序占用的内存,成为提前发现这些隐晦问题的灵丹妙药。

接下来,我来介绍一下,一些linux服务器监控java程序内存的常用办法。

废话少说,直入正题。java应用内存监控的任务首先是找出内存使用已接近所分配大小的java进程,这项任务可以通过很多种方式实现,这里只介绍1种通过top指令监控,其余的请自觉发挥。
直接输入top指令回车,不用加其余参数,会有如下的展示界面:

PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                
29115 root      15   0  2332  968  720 R  2.0  0.0   0:00.01           top 


其中RES列的内容就是进程19115占用的内存值,当然这个值不是个单纯的内存值,但是这个值具备监控内存大小的价值,观察此值即可,当然喜欢折腾的同学可以深入的了解噢。

如果发现你部署的程序运行一段时间后,RES接近或者超过分配给应用的大小,这时就要密切关注这个进程了。而关注的方式,当然不是让你盯着top指令刷新的屏幕看哦,是要分析这个java进程的GC情况。

观察GC也有很多中方式,但是很多都需要安装一些系统不会自带的工具,又或者是图形化界面。这里介绍一个非常简单又非常有价值的工具,此工具为jstat,是jdk自带的一个分析java程序内存的工具,一般在服务器上都可以随地执行。
就像你会从不同角度了解一个人一样,jstat提供很多参数,帮助你从不同角度了解要监控的java进程。这个后续会专门写一篇博客详述。

这里我们通过命令:jstat -gcutil pid 1000 10 这条命令的意思是,查看进程号为PID的进程GC状态,没1秒钟刷新10条记录。
以下截取自一次真实的java进程GC分析。其中第7行时发生一次FGC后,发现O区域(老一代对象区域)的对象被回收从97.71%回落到27.11%,说明JVM可以正常回收内存。整个过程P区域(永久对象区域)的对象占有内存几乎没有升高,说明不会出现永久区内存溢出的问题。
当然观察这些数据要做持续不断的观察,只是偶然的一次FGC并不具备参考意义,这个命令最重要的指标就是FGC,如果连续观察,FGC发生的频率很高,并且每次FGC发生时O区域(老一代对象区域)中的内存回收率很低的话,恭喜你,有得玩了,那就真的可能有内存泄露发生。

$jstat -gcutil 36674 1000 10
  S0     S1     E      O      P     YGC     YGCT    FGC    FGCT     GCT  
  0.00  99.17  72.10  89.21  60.17  10437  257.685    60   82.855  340.540
  0.00  99.17  72.74  89.21  60.17  10437  257.685    60   82.855  340.540
  0.00  99.17  79.18  89.21  60.17  10437  257.685    60   82.855  340.540
  0.00  11.44  93.02  89.82  60.17  10439  257.737    60   82.855  340.591
32.38   5.30 100.00  93.20  60.17  10442  257.810    60   82.855  340.664
  0.00  13.85 100.00  93.21  60.17  10444  257.853    60   82.855  340.707
  2.89   0.00   0.00  97.71  60.17  10444  257.945    61   82.855  340.800
  0.00   0.00  45.80  27.11  60.18  10444  257.945    61   84.494  342.440
  0.00   0.00  49.79  27.11  60.18  10444  257.945    61   84.494  342.440
  0.00   0.00  50.34  27.11  60.18  10444  257.945    61   84.494  342.440

如果真的泄露了,怎么办?难道如热锅上的蚂蚁?(你猜对了,正式商用的系统上线后,发生内存泄露,一些不够淡定的同学一定会像热锅上的蚂蚁)

还是不要太担心,总有办法,车到山前必有路嘛。慌没有用地,哪怕一堆领导站在你后面批评,冷静才是最重要地。要如定海神针搬,屹立不动才能从容的解决问题。有些同学关键时刻,一出问题,就大脑无主,本来可以自己解决的问题,最后全都得依靠所谓的高手。

这里介绍一种方法,找出内存泄露来源,就是用jmap,同jstat,jmap也是jdk自带的工具,不需要额外安装。
同样我在后面会单独写文章阐述这个工具。

使用命令:jmap -dump:format=b,file=xx.bin pid 生成当前JVM内存的快照文件,xx.bin,然后下载下来,同eclipse MemoryAnalyzer工具(这个工具后续也同样详述)进行分析,此工具的Dominator可以展示出内存中每个对象占用的内存大小,并且列出所有的对象,如此这般哪个对象占用的内存最多,并且不释放,就一目了然。极好的是这个工具还可以看到内存对象中保存的数据,如,一个hashmap中保存的数据,这对我们找出代码中内存泄露的位置,有极大帮助。

这里先稍稍带过,欲了解此工具的详细用法,请关注后续文章。至此,监控linux主机java应用的内存使用告一段落。由于本人在技术方面的局限,文章不够全面也难免问题,请朋友们不吝赐教。

                                                                

java程序自我监视内存使用 这是一个比较新的东西 不是在新意上 而是以前没什么人做过 这个想法不错,对于开发java程序的人来说很有参考价值 立即下载

相关推荐

一生一芯 预学习阶段 NEMU代码学习(2)

如果 nemu_state.state == NEMU_ABORT:说明程序处于 "中止" 状态,输出 "ABORT",并且使用 ANSI_FG_RED 红色格式化显示。如果 halt_ret == 0,表示程序正常终止(触发了 "GOOD TRAP"),输出 "HIT GOOD TRAP",并使用 ANSI_FG_GREEN 绿色显示。如果要执行的指令数量 n 小于预定义的常量 MAX_INST_TO_PRINT,则将 g_print_step 置为 true,表示会逐步打印指令执行的过程。

weixin_45041054的博客 826

Java 在云原生中的内存问题

Java在云原生时代的劣势及相关解决方案

每天都要开心呀(#^.^#) 1292

爬取微博热搜并分析情绪趋势:NLP + 可视化一体化实践

本文介绍了如何用Python构建微博热搜关键词爬取与情绪分析系统。通过requests库获取微博热搜数据,使用snownlp进行中文情绪分析(0-1评分),并借助pandas、matplotlib和seaborn实现数据可视化。文章提供了从环境配置、数据采集到情绪计算和趋势图绘制的完整代码示例,同时建议扩展思路包括评论分析、多维度情绪分类和舆情预警系统搭建。这套方法可以帮助快速洞察公众情绪变化,为舆情监测和市场研究提供数据支持。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 818

LINUX类主机JAVA应用程序占用CPU、内存过高分析手段

转自:http://dbaplus.cn/news-21-130-1.html   1. 应用程序占用资源高问题   目前大部分应用程序采用的是JAVA语言开发,在产品上线使用一段时间后,经常会出现某个JAVA程序占用的CPU,内存过高,而且几乎从不释放,导致系统卡顿,用户使用变慢,如果要恢复,则必须杀掉该进程或重启该服务,然后进行此操作时,必定会导致业务中断。   程序主要由代码组...

zfy421的专栏 913

Unity游戏Mono注入实战:从反编译到功能扩展

本文详细介绍了Unity游戏Mono注入的完整实战流程,从使用dnSpy反编译游戏核心逻辑,到编写自定义C#功能DLL,再到利用SharpMonoInjector进行动态注入。文章深入讲解了如何通过Harmony库拦截修改游戏方法,并介绍了使用MelonLoader框架和UnityExplorer进行高级模组开发与调试,最终通过一个游戏对象透视(ESP)案例演示了功能扩展的实现。

weixin_29018335的博客 458

假新闻检测论文分享(25)L-DefenseExplainable Fake News Detection With Large Language Model

现有的假新闻检测工作主要集中在通过深度网络结合多种信息来学习假新闻的潜在特征,如可信度、立场、传播模式、额外知识、域外数据等。尽管他们在探测上取得了成功,但受限于他们的黑箱性质,他们无法提供任何对公众至关重要的理由。为解决这一问题,一些研究致力于可解释假新闻检测(EFND),旨在同时生成准确性预测和解释。许多工作通过注意力机制在相关报道中注意突出特别的单词、短语或句子来提供可解释性。然而,这些工作只发现了对最终预测有高贡献的区域,缺乏直观和可信的解释。

weixin_41964296的博客 730

【Linux】查看系统内存

当程序需要访问某个虚拟页面时,操作系统会将其从磁盘上的交换空间中读取到物理内存中,同时将其他的虚拟页面写回到磁盘上的交换空间中,以保证物理内存中的空间足够满足程序的需求。每个虚拟页面都有一个对应的物理页面,当进程访问某个虚拟页面时,操作系统会将其映射到对应的物理页面上,以便实现进程的正常运行。管理方式不同:物理内存是由操作系统管理的,而虚拟内存是由操作系统和硬件共同管理的。总之,虚拟内存和物理内存都是计算机内存管理中不可或缺的部分,它们各自有不同的特点和作用,但都对计算机的性能和可靠性有着重要的影响。

scs_susi的博客 4385

鲁棒优化 (Robust Optimization) 算法详解及案例分析

鲁棒优化是一种用于处理不确定性优化问题的方法。其目标是在不确定性参数的可能取值范围内,找到一个对不确定性具有鲁棒性的解。

闲人编程的博客 4327

linux jvm监控命令,jvm gc监控分析常用命令

1、 jstat -gcutil pid统计gc信息统计。[root@tx-oss-web-01-16-100 jvm-monitor]# jstat -gcutil 8733S0 S1 E O P YGC YGCT FGC FGCT GCT82.43 0.00 75.67 97.91 99.57 23066 152.726 77 96.956 249.6812、 jstat -gc pid可以显...

weixin_39637723的博客 598

在Qt中集成VTK和PCL:实现数据可视化的完整指南

在现代软件开发中,数据可视化至关重要。将VTK(Visualization Toolkit)和PCL(Point Cloud Library)集成到Qt环境里,能为开发者提供强大的可视化解决方案。本文将深入讲解如何在Qt中读取PCL文件,展示VTK模型和PCL数据,适合想要在Qt项目中实现数据可视化的开发者。

轩宇的博客 916

RK3568 OpenHarmony3.2 蓝牙模块AP6275S适配(已更新)

OpenHarmony3.2 Release版默认是适配AP6275s这款蓝牙芯片的,但是打开蓝牙,发现无法扫描到设备、连接设备。目前平台soc为RK3568,根据项目要求,自定义外设。接下来将以解决bug为目的,学习和记录OpenHarmony平台下蓝牙模块的适配流程。RK809 CLK:32.768KHzUART1M1:与蓝牙模块通讯的串口:GPIO4_B6:GPIO4_A5WAKE_GPIO:未定义,硬件拉高1.8V: 未定义,悬空主要是打开串口,/dev/ttyS1,得到文件描述符fd。

Martian_Jonas的博客 2245

linux 查看 java 进程内存占用情况

1. 查看 java 进程内存占用 top -b -n 1 | grep java| awk '{print "PID:"$1",mem:"$6",CPU percent:"$9"%","mem percent:"$10"%"}' 2. 查看 pid 所在目录 lsof -p PID 3. 查看剩余内存 free -m

王坦的博客 1万+

【华为OD机试真题】458、堆内存申请 | 机试真题+思路参考+代码解析(CD卷)(C++、Java、Py)

题目描述 >有一个总空间为100字节的堆,现要从中新申请一块内存,内存分配原则为优先紧接着前一块已使用内存分配空间足够且最接近申请大小的空闲内存。

KJ.JK 1万+

linux命令查询系统应用信息

linux命令查询系统应用信息 下面这些都是经过总结的东西,是因为要做一个java连接远程服务器执行linux命令,查询系统和应用的信息,不知道如何写命令,经过上网搜索和同事的指导,总结了下面的命令,希望可以帮到大家!!!!! linux查询系统信息 hostname #查询主机名称 cat /etc/redhat-release #查询操作系统 ifconfig |head -2 |grep inet |awk '{print $2}' #查询服务器IP arch #查询系统架构 c

Yanhe_z的博客 1639

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

如何监控正在运行的Java内存情况

指定 RMI(Remote Method Invocation)服务绑定的主机名或 IP 地址。介绍两个jdk自带的工具(路径在jdk的bin目录下)具体怎么玩可以问ai了好用是真好用。禁用 JMX 连接的身份认证(很不安全,但是方便调试,务必仅限开发/测试环境使用)(连接不加密,方便调试,但。启用 JMX 远程管理,并指定 JMX 连接监听的主端口为。补充上以下命令:(还要更多功能也可以ai,我这里只是介绍)指定 RMI 通信使用的端口(用于实际的数据传输)为了使用以上两个工具:我们需要在写启动命令时,

m0_58379758的博客 146

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

linux mysql 内存监控_WGCLOUD: Linux性能监测工具,运维监控,网络吞吐率,服务器cpu监控,内存监控 运行环境 1.JDK1.8 2.tomcat8.5+ 3.mysql5.6...

WGCLOUD-v2.3.6WGCLOUD基于java语言开发,是高性能高并发的分布式监控平台,核心模块包括:主机监控,ES集群监控,CPU监控,内存监控,数据监控(mysql,oracle,pg等),服务心跳检测,应用进程管理,磁盘IO监控,系统负载监控,网络拓扑图,端口监控,日志文件监控,docker监控,监控告警信息(可集成微信钉钉短信等方式)推送。english readme1.采用服务端...

weixin_29224309的博客 247

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

docker容器内linux内存,Docker和容器内进程内存计算差别

生产环境上了大规模容器集群后,肯定需要对容器进行监控,容器的编排我们采用了Kubernetes,监控前期采用了Weave Scope,后期采用了cAdvisor+Heapster+InfluxDB的方案,刚开始监控感觉并没有什么异常,但是集群运行久了之后,发现监控的指标和预想的并不一样。我们有对应的Java应用跑在容器中,每个Container的资源限制了4C16G(看起来和虚机一样夸张),JVM...

weixin_36033417的博客 926

运用Jconsole监控JVM内存连接到远程linux与windows服务器

运用Jconsole监控JVM内存连接到远程linux与windows服务器 – WEB开发办 – JavaEye技术网站(转). Jconsole是JDK自带的监控工具,在JDK/bin目录下可以找到。它 用于连接正在运行的本地或者远程的JVM,对运行在java应用程序的资源消耗和性能进行监控,并画出大量的图表,提供强大的可视化界面。而且本身占用的 服务器内存很小,甚至可以说几乎不消耗,不失为一...

long_chuanren的专栏 240

Visualvm 远程测试 问题

从8.19号到8.20号 这两天一直在尝试使用VisualVM来远程测试Linux那台机的JAVA疯狂吃内存的情况。从安装到现在开始使用,出现了一个很烦人的问题。远程控制方法首先,配置java安全访问,将如下的代码存为文件 jstatd.all.policy:grant codebase"file:${java.home}/../lib/tools.jar"{ permission jav...

weixin_34066347的博客 146

主机监控指标解析—内存篇

现象可能原因建议排查工具解决思路Available 低,Buffer/Cache 低应用程序真的把内存吃光了top (按 M 排序), pidstat -r检查 Java 堆配置、检查是否存在内存泄露。Available 低,Buffer/Cache 高正常现象,系统在缓存文件free -h无需处理,除非 Swap 开始频繁活动。Swap Used 高,si/so 为 0历史遗留数据占用了 Swapvmstat 1暂时无视,说明那些进程是不活跃的。

weixin_53978099的博客 967

prometheus+grafana搭建tomcat、linux主机、mysql的监控

一、linux服务器cpu、io、磁盘、内存等的监控 安装node_exporter 1、下载地址:https://github.com/prometheus/node_exporter/releases/download/v1.1.1/node_exporter-1.1.1.linux-386.tar.gz。 2、将下载好的node_exporter上传到服务器并解压安装。 上传到目录:/usr/local,解压: tar -zxvf node_exporter-1.1.1.linux-..

FinelyYang的专栏 915

Linux系统——Zabbix监控

Zabbix概述(简介、监控原理、组成部分Server和Agent、主要特点、运行机制、监控对象、监控模式、Zabbix程序、Zabbix架构(Server-Client、Server-Proxy-Client、Master-Node-Client))、Zabbix的Server和Agent安装部署、在Web页面的操作(自动发现、自动注册、代理服务器)、SNMP监控模式

一坨小橙子的博客 5218

如何规划一台 Linux 主机,步骤是怎样?思维导图 代码示例(java 架构)

规划一台Linux主机,尤其是为了部署Java架构的应用程序,涉及多个步骤。下面我将列出一个基本的规划流程,并提供一些代码示例和建议来帮助你理解如何进行这样的规划。由于思维导图难以通过文本形式表达,我会以结构化的方式描述这个过程,你可以根据这个结构创建自己的思维导图。

qq_33240556的博客 1047

Linux性能监控之内存,linux性能监测工具,运维监控,网络吞吐率,服务器cpu监控,内存监控...

WGCLOUD-v2.3.6Wgcloud is a distributed monitoring platform based on Java language. Its core modules include: server cluster monitoring, ES cluster monitoring, CPU monitoring, memory monitoring, data ...

weixin_31831459的博客 182

linux监控工具WGCLOUD,功能使用说明

一、系统简介 WGCLOUD基于java语言开发,是微服务架构的分布式监控系统,核心模块包括:服务器集群监控,ES集群状态监控,CPU监控,内存监控,数据监控,服务心跳检测,应用进程管理,磁盘IO监控,系统负载监控,监控告警信息推送。比起zabbix监控工具,它更轻量,界面更友好,可轻松支持数百台主机监控。 下载:http://www.wgstart.com 二、主要功能 软件登录 登录:输入账号和密码登录。 仪表盘 登陆后显示主机的监控面板信息,显示信息包括:监控进程数量,数据源个数,监

qq_38461703的博客 1452
上一篇: 优快云的博客
下一篇: JDK自带工具jstack使用简析
computervstar
博客等级 码龄14年 0粉丝 3原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值