在当今计算机技术不断发展的时代,Linux已成为了一个非常流行的操作系统。而Java虚拟机(JVM)则是许多企业级和互联网应用程序的关键组成部分。在这样的情况下,Linux JVM的可视化监控Target="_blank">技巧变得尤为重要。本文将为读者介绍Linux JVM的可视化监控技巧,帮助读者更好地了解和掌握这一技术。
1. 使用JVisualVM
JVisualVM是一个可视化监控工具,它可以帮助用户对JVM进行监控和分析。它可以展示各种数据,比如吞吐量、堆大小、垃圾回收信息等等。JVisualVM是一个自带的工具,因此无需进行任何安装即可使用。只需要输入jvisualvm命令即可打开它。
在界面上,可以看到JVM进程的列表。选择所需的进程,点击“监视”按钮即可开始监控。此时,JVisualVM会提供进一步的详细信息和图表,包括堆大小和使用情况、线程信息、类信息和垃圾回收状态等等。可以根据这些信息进行分析和调试。
2. 使用JConsole
类似于JVisualVM,JConsole也是一个监控JVM并提供运行时信息的工具。不同的是,它是一个轻量级的工具。与JVisualVM不同的是,JConsole需要手动启动JMX服务。可以使用以下命令启动:
java -Dcom.sun.management.jmxremote.port= \
-Dcom.sun.management.jmxremote.authenticate=false \
-Dcom.sun.management.jmxremote.ssl=false \
-jar /path/to/jconsole.jar
启动JConsole后,选择所需的进程,即可开始监控。类似于JVisualVM,JConsole会提供堆大小、线程信息、类信息和垃圾回收信息等等。
3. 使用VisualVM插件
VisualVM是一个用于分析JVM的开源工具。它具有扩展性,并支持多种插件。其中,VisualGC和VisualVM VSX插件被广泛使用来监控和分析JVM。
要安装这些插件,请打开VisualVM,选择“工具” -> “插件”菜单,然后选择所需的插件进行安装。接下来,选择所需的JVM进程,使用VisualGC和VisualVM VSX插件进行监控和分析。
4. 使用命令行工具
如果需要使用命令行工具来监控JVM,则可以使用Jstat和Jmap命令。Jstat命令可用于监控JVM性能。它可以显示堆和垃圾回收信息。Jmap则可以用于生成JVM内存的Dump文件。
以下是Jstat命令的使用示例:
jstat -gcutil 1000 10
此命令将显示指定进程的垃圾回收情况,每秒更新一次,共持续10次。
以下是Jmap命令的使用示例:
jmap -dump:format=b,file=myfile.bin
此命令将生成一个名为myfile.bin的Dump文件,包含指定进程的JVM内容。
结论
相关问题拓展阅读:
JVM对于signal的处理及案例分析
Windows的Signal相对少一些, 如下:
Linux的Signal比较多, 如下:
Linux中的Signal可以由 kill 命令发起, 比如 kill -1 是对某一个进程发出SIGHUP信息.
JVM 所使用的信号:
信号的类型为
异常、错误、中断和控制码郑
表 1
注:
信号名称后提供的数字是该信号的标准数值。
使用 -Xrs(减少信号使用)选项来防止 JVM 处理大多数的信号。有关更多信息,请参阅 OrACLe 的 Java™ 应用程序启动程序页面 。
JVM 线程上的信号 1(SIGHUP)、2(SIGINT)、4(SIGILL)、7(SIGBUS)、8(SIGFPE)、11(SIGSEGV)和 15(SIGTERM)导致 JVM 关闭;因此,应用程序信号处理程序不应该尝试从这些信号恢复,除非它不再需要 JVM。
以上表格引用原文链接:
至于JVM是如何处理这些Signal的, 请参考以下链接:
除了JVM默认处理Signal的行为, 我们还可以自定义 SignalHandler 来做一些额外的工作, 比如在关闭JVM之前做一些回收或记录的事情.
例子:
关闭钩子使用的方法也很简单, Runtime.getRuntime().addShutdownHook(Thread hook) 即可。关闭钩子其实可以看成是一个已经初始化了的但还没启动的线程,当
JVM关闭时会并发地执行注册的所有关闭钩子
JVM的关闭方式可以分为三种:
注意:
Hook线程在JVM
正常关闭
才会执行,在强制关闭时不会执行。(异常关闭没试过, 有空试一下..)
另外在使用关闭钩子还要注意以下几点:
在初始化容器的时候就会注册一个hook线程用于清理容器.
JVM进程已经不在了, 重迟枣颂启后, 几分钟到半小时之间, 会看到获取不到spring bean的错误日志, 同时系统服务异常.
奇怪的是, 2台集群中的其他一台一直都是稳定运行, 只有这台是一直异常状态.
从以上的日志, 可以看出spring容器已经在销毁中了, 感觉是一个正常的关闭系统的流程.
在监控系统(Marvin)中观察了内存的情况, 没有什么波动, 基本排除了oom的情况.
接下来, 我使用jstack输出了当时的线程栈信息, 保留现场痕迹.
由上图所示, 从jstack日志中发现了2个关键的点:
自此, 大家可能已经看出来,
正是JVM会处理的Signal之一, 并且在上面的表格中已经清楚的写着
的操作是
挂起, 让JVM正常退出
是
中断
类型的信号, 上面对于
中断
类型的信号是这样描述的:
将从 JVM 进程外部异步发出中断信号以请求关闭。
结论:
找不到根本原因, 那么只能是想办法绕过这个问题.
所幸的是, 在搜索问题的时候, 让我知道了Linux还有一个岩漏 nohup 的命令.
nohup命令可以将
程序以忽略挂起信号(
SIGHUP)的方式运行起来,被运行的程序的输出信息将不会显示到终端。
于是把JVM的启动脚本改动了一下:
再次启动后, 稳定运行, 问题解决.
实际上通过JVM本身 -Xrs 的参数应该也能控制忽略SIGHUP信号的, 但是时间关系, 我没去实验..
这里案例也让我学到了很多JVM的处理细节.
同时也有了一些思考:
排查线上故障的基本步骤无非就是
实际上, 前面3步基本上已经能解决大部分的问题了, 剩下的一些疑难问题才会用到第4步. 但是第4步的操作对于实时性的要求是更高的, 必须之一时间搞定, 晚一点可能你就捕捉不到有效的证据了.
怎么查看linux的jvm内存
以WAS为例:
$ ps -ef | grep java
root 1 0 Sep17 ?:02:48 /opt/IBM/带帆WebSphere/AppServer/java/bin/java -Xms50m -Xmx256m
-Xms 和 -Xmx 分别代表分配JVM的最小内存和更大内存。
dump内存format b什么意思
其中jmap是java自带的工具查看整个JVM内存状态jmap-heap要注意的是在使用CMSGC情况下,jmap-heap的执行有可能会备消导致JAVA进程挂起查看JVM堆中对象详细占用情况jmap-histo导出整个JVM中内存信息jmap-dump:format=b,file=文件名jhat是sun1.6及以上版本中自带的一个用于分析JVM堆DUMP文件的工具,基于此工具可分析JVMHEAP中对象的内存占用情况jhat-J-Xmx1024M执行后等待console中输入starthttpserveronport7000即可使用浏览器访问IP:7000eclipseMemoryAnalyzerEclipse提供的一个用于分析JVM堆Dump文件的插件。借助这个插件可查看对象的内存占用状况,引用关系,分析内存泄露等。kill-3在Linux上找到Java所在的进程号,然后执行以上命令,线程的相关信息就输出到consolejstackjstack是sunJDK自带的工具,通过该工具可以看到JVM中线程的运行状况,包括锁等待,线程是否在运行执行jstack,线程的所有堆栈信息”http”daemonprio=10tid=x0a949bb60nid=0x884waitingformonitorentry”http”这个线程处于等待状态。waitingformonitorentry如果在连续几次输出线程堆栈信息都存在于同一个或多个线程上时,则说明系统中有锁竞争激烈,死锁,或锁饿死的想象。“http”daemonprio=10tix=xxxnid=xxxinobject.wait()java.lang.Thread.State:waiting(onobjectmonitor)该表示http的线程处芹搏于对象的Wait上,等待其他线程的唤醒,这也是线程池的常见用法。“LowMemoryDetector”daemonprio=10tix=xxnid=xxxrunnablejava.lang.Thread.State:runnable表示“LowMemoryDetector”的线程处于Runable状态,等待获取CPU的使用权.参考:/blog/static//jvisualvm一.JavaVisualVM概述对于使用命令行远程监控jvm太麻烦。在jdk1.6中Oracle提供了一个新的可视化的。JVM监控工具JavaVisualVM。jvisualvm.exe在JDK的bin目录下。双击启动JavaVisualVM后可以看到窗口左侧“应用程序”栏中有“本地”、“远程”、“快照”三个项目。“本地”下显示的是在localhost运行的Java程序的资源占用情况,如果本地有Java程序在运行的话启动JavaVisualVM即可看到相应的程序名,点击程序名打开相应的资源监控菜单,以图形的形式列出程序嫌滚祥所占用的CPU、Heap、PermGen、类、线程的统计信息。“远程”项下列出的远程主机上的Java程序的资源占用情况,但需要在远程主机上运行jstatd守护程序VisualVM分为3类,本地它会自动侦测到,并显示出来双击Local下的任一节点,看到右边的变化,你可以监控CPU,内存,类,线程等运行状况,实时监控 服务器 性能。右键VisualVM我们可以看到ThreadDump,HeapDump做ThreadDump很快,马上就可以看到结果HeapDump要稍花费一些时间(可以看到当前heap里对象的数量及占用的比例,做OOM很好用)对其功能不再做描述,可以查阅网上相关质量,我们主要讲的是如何使用VisualVM远程监控。关于linux jvm可视化监控的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
香港服务器首选树叶云,2H2G首月10元开通。树叶云(shuyeidc.com)提供简单好用,价格厚道的香港/美国云服务器和独立服务器。IDC+ISP+ICP资质。ARIN和APNIC会员。成熟技术团队15年行业经验。
成为高级程序员应具备什么条件?
作一个真正合格的高级程序员,或者说就是可以真正合格完成一些代码工作的程序员,应该具有的素质。 1:团队精神和协作能力把它作为基本素质,并不是不重要,恰恰相反,这是程序员应该具备的最基本的,也是最重要的安身立命之本。 把高水平程序员说成独行侠的都是在呓语,任何个人的力量都是有限的,即便如Linus这样的天才,也需要通过组成强大的团队来创造奇迹,那些遍布全球的为linux写核心的高手们,没有协作精神是不可想象的。 独行侠可以作一些赚钱的小软件发点小财,但是一旦进入一些大系统的研发团队,进入商业化和产品化的开发任务,缺乏这种素质的人就完全不合格了。 2:文档习惯说高水平程序员从来不写文档的肯定是乳臭未干的毛孩子,良好的文档是正规研发流程中非常重要的环节,作为代码程序员,30%的工作时间写技术文档是很正常的,而作为高级程序员和系统分析员,这个比例还要高很多。 缺乏文档,一个软件系统就缺乏生命力,在未来的查错,升级以及模块的复用时就都会遇到极大的麻烦。 3:规范化,标准化的代码编写习惯作为一些外国知名软件公司的规矩,代码的变量命名,代码内注释格式,甚至嵌套中行缩进的长度和函数间的空行数字都有明确规定,良好的编写习惯,不但有助于代码的移植和纠错,也有助于不同技术人员之间的协作。 有些coding fans叫嚣高水平程序员写的代码旁人从来看不懂,这种叫嚣只能证明他们自己压根不配自称程序员。 代码具有良好的可读性,是程序员基本的素质需求。 再看看整个linux的搭建,没有规范化和标准化的代码习惯,全球的研发协作是绝对不可想象的。 4:需求理解能力程序员需要理解一个模块的需求,很多小朋友写程序往往只关注一个功能需求,他们把性能指标全部归结到硬件,操作系统和开发环境上,而忽视了本身代码的性能考虑,有人曾经放言说写一个广告交换程序很简单,这种人从来不知道在百万甚至千万数量级的访问情况下的性能指标是如何实现的,对于这样的程序员,你给他深蓝那套系统,他也做不出太极链的并访能力。 性能需求指标中,稳定性,并访支撑能力以及安全性都很重要,作为程序员需要评估该模块在系统运营中所处的环境,将要受到的负荷压力以及各种潜在的危险和恶意攻击的可能性。 就这一点,一个成熟的程序员至少需要2到3年的项目研发和跟踪经验才有可能有心得。 5:复用性,模块化思维能力经常可以听到一些程序员有这样的抱怨,写了几年程序,变成了熟练工,每天都是重复写一些没有任何新意的代码,这其实是中国软件人才最大浪费的地方,一些重复性工作变成了熟练程序员的主要工作,而这些,其实是完全可以避免的。 复用性设计,模块化思维就是要程序员在完成任何一个功能模块或函数的时候,要多想一些,不要局限在完成当前任务的简单思路上,想想看该模块是否可以脱离这个系统存在,是否可以通过简单的修改参数的方式在其他系统和应用环境下直接引用,这样就能极大避免重复性的开发工作,如果一个软件研发单位和工作组能够在每一次研发过程中都考虑到这些问题,那么程序员就不会在重复性的工作中耽误太多时间,就会有更多时间和精力投入到创新的代码工作中去。 一些好的程序模块代码,即便是70年代写成的,拿到现在放到一些系统里面作为功能模块都能适合的很好,而现在我看到的是,很多小公司软件一升级或改进就动辄全部代码重写,大部分重复性工作无谓的浪费了时间和精力。
深圳东运车载SD卡录象机的功能优势是什么?
深圳东运车载SD卡录象机的功能优势:Linux嵌入式操作系统,支持遥控操作中英文操作界面; 支持4路音视频同步输入,具备CIF、HD1、D1三种分辨率; 视频采用H.264 Main Profile 编码格式,压缩比高,占用存储空间小,图像清晰; 音频采用ADPCM格式,声音清楚; FAT32文件管理格式,电脑回放查询方便快捷; 8-48V DC宽电压输入,适用于各种汽车; 支持12V DC稳压输出,可为车载摄像头供电; 全模化金属外壳,防尘、防水溅、防电磁干扰; 采用工业级器件,稳定可靠; 支持汽车黑匣子功能,可记录汽车行驶状态; 多种通讯接口,可与各种外部设备通讯; 采用车载专业连接器,保障稳定工作;选择东运 世界的幸运。

这是什么软件,不收费的吗?
这里都是免费的,我来推荐几个好的排名第一的BitDefender简介:BitDefender杀毒软件是来自罗马尼亚的老牌杀毒软件,二十四万超大病毒库,它将为你的计算机提供最大的保护,具有功能强大的反病毒引擎以及互联网过滤技术,为你提供即时信息保护功能,通过回答几个简单的问题,你就可以方便的进行安装,并且支持在线升级。 它包括 1.永久的防病毒保护;2.后台扫描与网络防火墙;3.保密控制;4.自动快速升级模块;5.创建计划任务;6.病毒隔离区。 排名第一的BitDefender专业版下载地址,最高版本,有汉化,有算号器,17M速度不错啊。 SN:82E04-6AFBA-1DA94-7B539排名第二的Kaspersky简介:Kaspersky(卡巴斯基)杀毒软件来源于俄罗斯,是世界上最优秀、最顶级的网络杀毒软件,查杀病毒性能远高于同类产品。 卡巴斯基杀毒软件具有超强的中心管理和杀毒能力,能真正实现带毒杀毒!提供了一个广泛的抗病毒解决方案。 它提供了所有类型的抗病毒防护:抗病毒扫描仪、监控器、行为阻段、完全检验、E-mail通路和防火墙。 它支持几乎是所有的普通操作系统。 卡巴斯基控制所有可能的病毒进入端口,它强大的功能和局部灵活性以及网络管理工具为自动信息搜索、中央安装和病毒防护控制提供最大的便利和最少的时间来建构你的抗病毒分离墙。 卡巴斯基抗病毒软件有许多国际研究机构、中立测试实验室和IT出版机构的证书,确认了卡巴斯基具有汇集行业最高水准的突出品质。 卡巴斯基反病毒软件6.0.300个人版官方中文版 一年免费升级排名第三的F-Secure AntiVirus简介:来自Linux的故乡芬兰的杀毒软件,集合AVP,LIBRA,ORION,DRACO四套杀毒引擎,其中一个就是Kaspersky的杀毒内核,而且青出于蓝胜于蓝,个人感觉杀毒效率比Kaspersky要好,该软件采用分布式防火墙技术,对网络流行病毒尤其有效。 在《PC Utilites》评测中超过Kaspersky名列第一,但后来Kaspersky增加了扩展病毒库,反超F-secure。 鉴于普通用户用不到扩展病毒库,因此F-secure还是普通用户很不错的一个选择。 F-Secure AntiVirus是一款功能强大的实时病毒监测和防护系统,支持所有的 Windows 平台,它集成了多个病毒监测引擎,如果其中一个发生遗漏,就会有另一个去监测。 可单一扫描硬盘或是一个文件夹或文件,软件更提供密码的保护性,并提供病毒的信息。 F-Secure AntiVirus6.01F-Secure AntiVirus Client Security v5.56 特别版:0QQC-KJ2D-D663-7XC7-P5U7第四的Pc-Cillin(趋势)简介:趋势科技网络安全个人版集成了包括个人防火墙、防病毒、防LJ邮件等功能于一体,最大限度地提供对桌面机的保护并不需要用户进行过多的操作。 在用户日常使用及上网浏览时,进行“实时的安全防御监控”;内置的防火墙不仅更方便您使用因地制宜的设定,“专业主控式个人防火墙”及“木马程序损害清除还原技术”的双重保障还可以拒绝各类黑客程序对计算机的访问请求;趋势科技全新研发的病毒阻隔技术,包含“主动式防毒应变系统”以及“病毒扫瞄逻辑分析技术”不仅能够精准侦测病毒藏匿与化身并予以彻底清除外,还能针对特定变种病毒进行封锁与阻隔,让病毒再无可趁之机;强有力的“LJ邮件过滤功能”为您全面封锁不请自来的LJ邮件。 趋势科技网络安全个人版的诸多功能确保您的电脑系统运作正常,从此摆脱病毒感染的恶梦。 PC-cillin 2006 网络安全版 Sn:PGEF-0017-4168-1475-0999第五名的ESET Nod32简介:国外很权威的防病毒软件评测给了NOD32很高的分数,在全球共获得超过40多个奖项,包括Virus Bulletin、PC Magazine、ICSA、Checkmark认证等,更加是全球唯一通过26次VB100%测试的防毒软件,高据众产品之榜首!产品线很长,从DOS、Windows 9x/Me、Windows NT/XP/2000,到Novell Netware Server、Linux、BSD等,都有提供。 可以对邮件进行实时监测,占用内存
发表评论