「java进程监控工具」java系统监控工具
本篇文章给大家谈谈java进程监控工具,以及java系统监控工具对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、如何使用JDK自带jvisualvm监控工具
- 2、怎样采用java实现对系统进程的监控
- 3、如何查看unix 的java内存使用情况
- 4、Java监控一个进程的执行状态
- 5、请教JAVA怎么监控AIX的进程
- 6、北大青鸟设计培训:java内存诊断软件?
如何使用JDK自带jvisualvm监控工具
1 启动jvisualvm 首先到JDK安装目录/bin目录下,双击jvisualvm.exe文件启动
2 进入jvisualvm界面,右侧为正在运行的Java程序,小编打开了一个jconsole程序来做示例
3 双击要监控的Java进行,有关监控进程的概要,监控,线程等信息都会以图像的方式显现出来,能更方便的对Java运行程序做分析
4 右键左边栏,正在运行的Java程序,可以执行Dump,线程,Dump堆的操作并且可以将正在运行的程序进行快照储备,同时可以设置在发生内存溢出时自动生成Dump文件。
5 右键【文件】--【添加远程主机】可对远程运行的Java程序进行监控
6 菜单栏,工具--插件 辅助功能 可以帮助我们更细致对Java程序进行监视分析,比如Visual GC 能显示年轻代里的Eden区和survivor区的实时数据
7 Visualvm是一个非常实用的Java 监控工具,操作十分方便,多用几次就会很快的入手啦。
怎样采用java实现对系统进程的监控
SWT Win32 Extension 是Eclipse类库SWT的Win32本地原生扩展.
本项目提供了一个软件开发工具库,能够让您使用Java语言开发原生的Windows应用程序而不需要编写额外的JNI代码。使用SWT Win32 Extension,您将不需要创建原生的动态链接库来调用操作系统动态链接库的系统API或者方法。您仅仅需要做的就是编写Java代码, SWT Win32 Extension来负责剩下的部分。SWT Win32 Extension提供了一系列的功能使您的应用程序看上去和Win32本机程序别无二致。
窗口装饰功能: 提供窗口置顶,透明,闪动等功能。
自定义窗口: 创建不规则的窗口。
访问Windows注册表。
系统文件夹: 获取系统特殊文件加的路径和图标。
系统快捷方式: 管理系统快捷方式。
系统相关信息: 收集系统CPU,内存,环境变量等相关信息。
系统会话: 提供关机,休眠,重启,注销等功能。
系统IO及网络功能: 提供磁盘和网络相关信息。
活动桌面功能: 管理Windows活动桌面。
系统钩子: 注册和卸载系统钩子,能够拦截和处理系统事件。
窗口系统菜单: 管理窗口菜单。用户可以自定义系统菜单和处理菜单事件。
Ole 控件: 提供对一些常用控件的封装,比如flash。 值得一提的是,您能够访问SWT提供的所有功能,因为SWT Win32 Extension是从SWT派生出来的。
如何查看unix 的java内存使用情况
jmap (linux下特有,也是很常用的一个命令)
观察运行中的jvm物理内存的占用情况。
参数如下:
-heap :打印jvm heap的情况
-histo: 打印jvm heap的直方图。其输出信息包括类名,对象数量,对象占用大小。
-histo:live : 同上,但是只答应存活对象的情况
-permstat: 打印permanent generation heap情况
命令使用:
jmap -heap 3409
可以观察到New Generation(Eden Space,From Space,To Space),tenured generation,Perm Generation的内存使用情况
输出内容:
jmap -histo 3409 | jmap -histo:live 3409
可以观察heap中所有对象的情况(heap中所有生存的对象的情况)。包括对象数量和所占空间大小。
输出内容:
写个脚本,可以很快把占用heap最大的对象找出来,对付内存泄漏特别有效。
如果结果很多,可以用以下命令输出到文本文件。
jmap -histo 3409 | jmap -histo:live 3409 a.txt
jinfo:可以输出并修改运行时的java 进程的opts。
jps:与unix上的ps类似,用来显示本地的java进程,可以查看本地运行着几个java程序,并显示他们的进程号。
jstat:一个极强的监视VM内存工具。可以用来监视VM内存内的各种堆和非堆的大小及其内存使用量。
jmap:打印出某个java进程(使用pid)内存内的所有'对象'的情况(如:产生那些对象,及其数量)。
jconsole:一个java GUI监视工具,可以以图表化的形式显示各种数据。并可通过远程连接监视远程的服务器VM。
详细:在使用这些工具前,先用JPS命令获取当前的每个JVM进程号,然后选择要查看的JVM。
jstat工具特别强大,有众多的可选项,详细查看堆内各个部分的使用量,以及加载类的数量。使用时,需加上查看进程的进程id,和所选参数。以下详细介绍各个参数的意义。
jstat -class pid:显示加载class的数量,及所占空间等信息。
jstat -compiler pid:显示VM实时编译的数量等信息。
jstat -gc pid:可以显示gc的信息,查看gc的次数,及时间。其中最后五项,分别是young gc的次数,young gc的时间,full gc的次数,full gc的时间,gc的总时间。
jstat -gccapacity:可以显示,VM内存中三代(young,old,perm)对象的使用和占用大小,如:PGCMN显示的是最小perm的内存使用量,PGCMX显示的是perm的内存最大使用量,PGC是当前新生成的perm内存占用量,PC是但前perm内存占用量。其他的可以根据这个类推, OC是old内纯的占用量。
jstat -gcnew pid:new对象的信息。
jstat -gcnewcapacity pid:new对象的信息及其占用量。
jstat -gcold pid:old对象的信息。
jstat -gcoldcapacity pid:old对象的信息及其占用量。
jstat -gcpermcapacity pid: perm对象的信息及其占用量。
jstat -util pid:统计gc信息统计。
jstat -printcompilation pid:当前VM执行的信息。
除了以上一个参数外,还可以同时加上 两个数字,如:jstat -printcompilation 3024 250 6是每250毫秒打印一次,一共打印6次,还可以加上-h3每三行显示一下标题。
jmap是一个可以输出所有内存中对象的工具,甚至可以将VM 中的heap,以二进制输出成文本。
命令:jmap -dump:format=b,file=heap.bin
file:保存路径及文件名
pid:进程编号
?jmap -histo:live pid| less :堆中活动的对象以及大小
?jmap -heap pid : 查看堆的使用状况信息
jinfo:的用处比较简单,就是能输出并修改运行时的java进程的运行参数。用法是jinfo -opt pid 如:查看2788的MaxPerm大小可以用 jinfo -flag MaxPermSize 2788。
jconsole是一个用java写的GUI程序,用来监控VM,并可监控远程的VM,非常易用,而且功能非常强。使用方法:命令行里打 jconsole,选则进程就可以了。
JConsole中关于内存分区的说明。
Eden Space (heap): 内存最初从这个线程池分配给大部分对象。
Survivor Space (heap):用于保存在eden space内存池中经过垃圾回收后没有被回收的对象。
Tenured Generation (heap):用于保持已经在 survivor space内存池中存在了一段时间的对象。
Permanent Generation (non-heap): 保存虚拟机自己的静态(refective)数据,例如类(class)和方法(method)对象。Java虚拟机共享这些类数据。这个区域被分割为只读的和只写的,
Code Cache (non-heap):HotSpot Java虚拟机包括一个用于编译和保存本地代码(native code)的内存,叫做“代码缓存区”(code cache)
?jstack ( 查看jvm线程运行状态,是否有死锁现象等等信息) : jstack pid : thread dump
?jstat -gcutil pid 1000 100 : 1000ms统计一次gc情况统计100次;
另外推荐一款查看jmap dump 的内存对象工具 MemoryAnalyzer
Java监控一个进程的执行状态
应用程序很高兴对所有这些活动一无所知。它只知道自己的虚拟地址空间。但是,如果当前在主存中的页面集(称为 驻留集)少于实际要使用的页面集(称为 工作集),应用程序的性能很快就会显著降低。(不幸的是,本文中您将看到,我们要讨论的工具常常交换使用这两个术语,尽管它们指的是完全不同的事物。) Task Manager 和 PerfMon 我们首先考察两种最常见的工具:Task Manager 和 PerfMon。这两个工具都随 Windows 一起提供,因此由此起步比较容易。 Task Manager Task Manager 是一种非常见的 Windows 进程监控程序。您可以通过熟悉的 Ctrl-Alt-Delete 组合键来启动它,或者右击任务栏。Processes 选项卡显示了最详细的信息,如图 2 所示。 图 2. Task Manager 进程选项卡 图 2 中显示的列已经通过选择 View -- Select Columns 作了调整。有些列标题非常含糊,但可以在 Task Manager 帮助中找到各列的定义。和进程内存使用情况关系最密切的计数器包括: Mem Usage(内存使用):在线帮助将其称为进程的工作集(尽管很多人称之为驻留集)——当前在主存中的页面集。但是这个数值包含能够和其他进程共享的页面,因此要注意避免重复计算。比方说,如果要计算共享同一个 DLL 的两个进程的总内存占用情况,不能简单地把“内存使用”值相加。 Peak Mem Usage(内存使用高峰值):进程启动以来 Mem Usage(内存使用)字段的最大值。 Page Faults(页面错误):进程启动以来要访问的页面不在主存中的总次数。 VM Size(虚拟内存大小):联机帮助将其称为“分配给进程私有虚拟内存总数。”更确切地说,这是进程所 提交的内存。如果进程保留内存而没有提交,那么该值就与总地址空间的大小有很大的差别。 虽然 Windows 文档将 Mem Usage(内存使用)称为工作集,但在该上下文中,它实际上指的是很多人所说的驻留集(resident set),明白这一点很重要。您可以在 Memory Management Reference 术语表(请参阅 参考资料)中找到这些术语的定义。 工作集 更通常的含义指的是一个逻辑概念,即在某一点上为了避免分页操作,进程需要驻留在内存中的那些页面。 PerfMon 随 Windows 一起提供的另一种 Microsoft 工具是 PerfMon,它监控各种各样的计数器,从打印队列到电话。PerfMon 通常在系统路径中,因此可以在命令行中输入 perfmon 来启动它。这个工具的优点是以图形化的方式显示计数器,很容易看到计数器随时间的变化情况。 请在 PerfMon 窗口上方的工具栏中单击 + 按钮,这样会打开一个对话框让您选择要监控的计数器,如图 3a 所示。计数器按照 性能对象分成不同的类别。与内存使用关系最密切的两个类是 Memory 和 Process。选中计数器然后单击 Explain 按钮,就可以看到计数器的定义。说明出现在主对话框下方弹出的单独的窗口中。
请教JAVA怎么监控AIX的进程
首先要查谁用CPU最多:显示前10个累计占用CPU时间的进程#ps-e|head-n1;ps-e|grep-v"TIME|0:"|sort+2b-3-n-r|head-n10显示前10个当前占用CPU时间的进程#ps-ef|head-n1;ps-ef|grep-v"C|0:00"|sort+3b-4-n-r|head-n10Aix命令:列出使用内存和Cpu前几位的进程(1)显示10个消耗cpu最多的进程#psaux|head-1;psaux|sort-rn+2|head-10(2)显示10个消耗内存最多的进程#psvx|head-1;psvx|grep-vPID|sort-rn+6|head-10(3)显示10个换页最多的进程#psvx|head-1;psvx|grep-vPID|sort-rn+4|head-10(4)显示10个消耗存储空间最多的进程#psaux|head-1;psaux|sort-rn+3|head-10如何监控进程的内存使用情况(AIX)AIX监控进程内存使用的工具比较多,个人觉得比较方便的有nmon,svmon,其中svmon是AIX自带的工具,需要root权限执行,可以监控进程详细内存使用信息,如:svmon-Ppid(要监控的进程PID)-i1(每秒刷新一次)|greppidAIX下进程内存分析AIX下可以使用psv工具或者svmon工具来分析进程内存。比如:#svmon-P23288-------------------------------------------------------------------------------PidCommandInusePinPgspVirtual64-bitMthrd23288ora_pmon_V829598145118216560NNVsidEsidTypeDescriptionInusePinPgspVirtualAddrRange17813workshmat/mmap1182400118240..2470017611perscode,largefile/dev96810--0..968000workkernelseg3982145018233900..21804:65474..6553518018dworksharedlibrarytext2852001580..6553547642workprocessprivate1127101127面这几个命令组合对于管理RS/6000AIX系统有帮助:(1)显示10个消耗CPU最多的进程:#psaux|head-1;psaux|sort-rn+2|head–10(2)显示10个消耗存储空间最多的进程:#psaux|head-1;psaux|sort-rn+3|head-10(3)按顺序显示系统中受罚的进程:#ps-eakl|head-1;ps-eakl|sort-rn+5(4)按优先级顺序显示系统中的进程:#ps-eakl|sort-n+6|head(5)按处理时间为顺序显示系统中的前十个进程:#psvx|head-1;psvx|grep-vPID|sort-rn+3|head–10(6)按实际内存使用的多少顺序显示系统中的前十个进程:#psvx|head-1;psvx|grep-vPID|sort-rn+6|head–10(7)按换入页面的多少顺序显示系统中的前10个进程:#psvx|head-1;psvx|grep-vPID|sort-rn+4|head-10(责任编辑:优优系统)
北大青鸟设计培训:java内存诊断软件?
对于每一个java进程来说都有自己的内存池和使用空间,而这也就意味着会出现内存使用错误等问题,而这时候我们就需要对java内存进行诊断分析,今天美兰java培训就一起来了就一下,在进行内存诊断上都有哪些软件可以使用。
Java堆:分析诊断数据堆转储分析堆转储可以使用如下的工具进行分析:EclipseMAT(内存分析工具,MemoryAnalyzerTool)是一个社区开发的分析堆转储的工具。
它提供了一些很棒的特性,包括:可疑的泄漏点:它能探测堆转储中可疑的泄露点,报告持续占有大量内存的对象;直方图:列出每个类的对象数量、浅大小(shallow)以及这些对象所持有的堆。
直方图中的对象可以很容易地使用正则表达式进行排序和过滤。
这样有助于放大并集中我们怀疑存在泄露的对象。
它还能够对比两个堆转储的直方图,展示每个类在实例数量方面的差异。
这样能够帮助我们查找Java堆中增长快的对象,并进一步探查确定在堆中持有这些对象的根;不可达的对象:MAT有一个非常棒的功能,那就是它允许在它的工作集对象中包含或排除不可达/死对象。
如果你不想查看不可达的对象,也就是那些会在下一次GC周期中收集掉的对象,只关心可达的对象,那么这个特性是非常便利的;重复的类:展现由多个类加载器所加载的重复的类;到GC根的路径:能够展示到GC根(JVM本身保持存活的对象)的引用链,这些GC根负责持有堆中的对象;OQL:我们可以使用对象查询语言(ObjectQueryLanguage)来探查堆转储中的对象。
它丰富了OQL的基础设施,能够编写复杂的查询,帮助我们深入了解转储的内部。
JavaVisualVM:监控、分析和排查Java语言的一站式工具。
它可以作为JDK工具的一部分来使用,也可以从GitHub上下载。
它所提供的特性之一就是堆转储分析。
它能够为正在监控的应用创建堆转储,也可以加载和解析它们。
从堆转储中,它可以展现类的直方图、类的实例,也能查找特定实例的GC根;jhat命令工具(在/bin文件夹中)提供了堆转储分析的功能,它能够在任意的浏览器中展现堆转储中的对象。
默认情况下,Web服务器会在7000端口启动。
jhat支持范围广泛的预定义查询和对象查询语言,以便于探查堆转储中的对象;Java任务控制(JavaMissionControl)的JOverflow插件:这是一个实验性的插件,能够让Java任务控制执行简单的堆转储分析并报告哪里可能存在内存浪费;Yourkit是一个商业的Javaprofiler,它有一个堆转储分析器,具备其他工具所提供的几乎所有特性。
除此之外,YourKit还提供了:可达性的范围(reachabilityscope):它不仅能够列出可达和不可达的对象,还能按照它们的可达性范围显示它们的分布,也就是,强可达、弱/软可达或不可达;内存探查:YourKit内置了一组全面的查询,而不是使用ad-hoc查询功能,YourKit的查询能够探查内存,查找反模式并为常见的内存问题分析产生原因和提供解决方案。
关于java进程监控工具和java系统监控工具的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
发布于:2022-12-09,除非注明,否则均为
原创文章,转载请注明出处。