Java profiling虽然已经有了youkit、jprofile等工具,但是这些工具一般不会在生产环境使用,线上遇到问题,最简单直接的还是使用jdk自带的命令行工具进行问题定位。另外,对于线上的监控,可以写个一个定时脚本,不断执行相关命令,将结果发送到opentsdb,做监控(当然,你也可以在生产环境起jstatd服务)。
下面简单介绍几个命令
1,jps
这个命令是最基础的命令了,它的作用和ps -ef | grep java相当,是进行问题排查的入口。但是针对java进程,可能比ps更好用(这一点我不是很确定,没有深入看过ps命令)。其使用方式如下
jps -l
在我个人的centos虚拟机上,执行结果如下
前面数字是pid,后面是主类的全名
jps可以不带参数使用,可支持的参数如下
选项 | 作用 |
-q | |
-m | 输出进程启动时传递给main的参数,比如jps -m中的-m |
-l | 输出进程主类全名称,比如sun.tools.jps.Jps |
-v | 输出进程启动时的JVM参数,比如-Xms8m |
2,jstat
可以查看java进程的类加载、gc等信息
查看GC情况可以使用jstat -gc 3731 1000 20,其通用模式是 jstat [option] [pid] [timeinterval] [times]
上面的命令表示查看pid为3731的进程gc情况,1000为时间间隔,单位毫秒,20是次数
在我个人的centosx虚拟机上,执行结果如下
其中S0C, S1C,表示新生代两个Survivor区的容量,EC表示Eden区容量,OC表示老年代容量,MC(我的jdk版本为1.8,1.8一起为PC)表示持久代容量。
jstat另外支持其他一些参数,分别实现不同功能。
3,jstack
这个命令可以生成线程快照,同样是在我本人的centos虚机上执行命令,得到的结果如下
如此,通过上面三个简单的命令,已经可以达到查看GC和线程状态的目的。最后补充一句,性能优化和问题排查是个很系统化的工作,做好监控和告警,是定位问题最有效的手段。
相关推荐
Java命令行工具是Java开发中的基础部分,它们允许开发者在没有图形用户界面(GUI)的情况下执行各种任务。这篇博文可能探讨了如何利用Java的命令行工具进行程序的编译、运行和其他相关操作。在Java中,命令行工具...
Java命令行辅助工具是一款专为Java开发者设计的小型应用程序,旨在简化Java源代码的编译和执行过程。在日常开发中,我们通常需要通过命令行界面(CLI)来操作Java程序,这包括编译`.java`源文件为`.class`字节码文件...
下面将对这些Java命令行工具进行详细的总结和说明。 一、基础工具(Basic Tools) 1. javac:Java编程语言的编译器。开发者使用它将.java源文件编译成.class字节码文件,以便能够在JVM上运行。 2. java:Java应用...
在创建命令行工具时,Java提供了丰富的类库,如`java.util.Scanner`用于用户输入处理,`java.io`包下的类用于文件操作,`java.lang.ProcessBuilder`可以调用系统命令,以及`java.nio`非阻塞I/O流等,这些都使得Java...
Java cmd命令行模拟工具是一种用于在Java环境中模拟操作系统命令行工具的实用程序。它使得开发者能够在Java代码中执行系统命令,获取命令输出,并对命令行交互进行控制,这对于自动化测试、脚本编写以及需要与系统...
Java命令行classpath(类路径)的设置是Java开发过程中的一项基础操作,对于理解和运行Java程序至关重要。类路径是指定Java虚拟机(JVM)在执行Java程序时查找类文件的位置。正确配置类路径能确保JVM能够找到并加载...
精品软件工具--圣天诺软锁的Java命令行工具:验证授权、获取授权信息、获取机器指纹信息、更新授权文件等
这篇博客文章将探讨如何在Eclipse中配置和使用Java命令行参数,这对于理解程序的运行行为以及调试是非常有帮助的。 在Java程序中,命令行参数是通过`main`方法的`String[] args`数组传递的,它们允许我们在不修改...
Java命令行文件管理器是一款基于Java编程语言开发的实用工具,专为用户在终端环境中提供高效、便捷的文件操作体验。这款程序集成了多种文件管理功能,如创建、删除、重命名、拷贝文件,浏览目录,以及压缩与解压缩、...
使用JCmdLineProgress库,开发者可以方便地在Java命令行程序中集成进度条,提高用户体验。通过实例化库提供的类,设置参数,然后在执行任务时调用相应的更新方法,就可以实现动态的进度显示。 例如,以下是一个简单...
【Java聊天工具命令行版详解】 Java是一种广泛使用的编程语言,以其“一次编写,到处运行”的特性而闻名。在这个项目中,我们关注的是一个用Java编写的命令行聊天工具。这款工具提供了一个基本的交互平台,让两个或...
总的来说,"Java命令行应用开发"涵盖了Java编程的多个方面,包括语言基础、输入/输出、异常处理、文件操作、设计原则、构建工具和测试实践。这个项目提供了学习和巩固这些技能的平台,同时也为更复杂的系统开发打下...
《Java命令行大富翁》是一款基于Java编程语言开发的命令行游戏,旨在帮助初学者在娱乐中学习Java基础知识。这款游戏虽然没有华丽的图形界面,但通过简单的字符输出和用户输入,模拟了经典的大富翁游戏规则,为玩家...
Java命令行解析器JOpt Simple是一款强大的开源工具,专门用于处理Java应用程序的命令行参数和选项。它使得开发者能够方便地构建具有复杂选项结构的命令行界面,而无需编写大量繁琐的代码。JOpt Simple提供了丰富的...
jvm命令行工具,java性能优化,jdk命令工具, jcmd命令、jps命令、jmap命令、jstack命令、jinfo命令、jstat命令
JCmdLineProgress库就是为了实现这个目的,它允许开发者在Java命令行界面中轻松创建动态的进度条。 JCmdLineProgress库的核心功能在于提供了一个简洁的API,让开发者可以轻松地集成到他们的程序中。这个库通常包括...
Java命令行外壳框架是一种用于构建命令行界面的工具,它基于properties配置文件并利用Java的反射机制来实现命令的解析和执行。...对于那些需要快速构建命令行工具或服务的Java开发者来说,这是一个非常实用的工具。