JAVA命令学习系列——jps

本文介绍了jps命令的工作原理及其实现机制,包括如何通过临时文件夹中的特定文件获取Java进程信息,并讨论了jps命令可能出现的问题及其解决办法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

(http://www.hollischuang.com/archives/303)

jsp位于jdk的bin目录下(/usr/lib/jvm/java/bin),其作用是现实当前系统的Java进程情况,及其id号,jps 并不使用应用程序名来查找JVM实例。因此,它查找所有的Java应用程序,包括及时没有使用Java执行体的那种(例如,定制的启动器)。另外,jps仅查找当前用户的Java进程,而不是当前系统中所有进程。
原理
jdk中的jps命令可以显示当前运行的Java进程以及相关参数,它的实现机制如下:

Java程序在启动以后,会在java.io.tmpdir指定的目录下,就是临时文件夹是,生成一个类似于hsperfdaa_User的文件夹(直接就是cd /tmp/hsperfdata_username)这个文件夹里有几个文件,名字就是java进程的pid,可以通过解析这几个文件获得系统的参数。(其中有jsp使用进程的pid,因为它也是java命令也要开一个进程)。

jps失效处理
现象:用ps -ef|grep java 能看到启动的java进程,但是用jps查看却不存在该进程id。在该情况下jconsole/jvidualvm可能无法监控该进程,其他java自带工具可能也无法使用。
分析
jps、jconsole、jvisualvm等工具的数据来源就是这个文件*(/tmp/hsperfdata_userName/pid)所以当该文件不存在或是无法读取时就会出现jps无法查看该进程号,jconsole无法监控等问题。
原因
(1)、磁盘读写、目录权限问题 若该用户没有权限写/tmp目录或是磁盘已满,则无法创建/tmp/hsperfdata_userName/pid文件。或该文件已经生成,但用户没有读权限

(2)、临时文件丢失,被删除或是定期清理 对于linux机器,一般都会存在定时任务对临时文件夹进行清理,导致/tmp目录被清空。这也是我第一次碰到该现象的原因。常用的可能定时删除临时目录的工具为crontab、redhat的tmpwatch、ubuntu的tmpreaper等等

这个导致的现象可能会是这样,用jconsole监控进程,发现在某一时段后进程仍然存在,但是却没有监控信息了。

(3)、java进程信息文件存储地址被设置,不在/tmp目录下 上面我们在介绍时说默认会在/tmp/hsperfdata_userName目录保存进程信息,但由于以上1、2所述原因,可能导致该文件无法生成或是丢失,所以java启动时提供了参数(-Djava.io.tmpdir),可以对这个文件的位置进行设置,而jps、jconsole都只会从/tmp目录读取,而无法从设置后的目录读物信息,这是我第二次碰到该现象的原因

### Java 和大数据学习资源 对于希望深入理解Java以及其在大数据领域应用的学习者来说,可以从多个方面着手准备。一方面,在掌握基础编程技能之后,可以探索更复杂的主题如多线程开发[^1]。这不仅有助于提高程序性能,还能够更好地处理并发任务。 #### 多线程开发入门 了解如何创建并管理线程是至关重要的第一步。通过研究不同类型的锁机制、同步方法和其他高级特性来增强应用程序的功能性和稳定性。 #### 单线程对比多线程的优势 相较于传统的单线程模型,采用多线程架构能显著提升系统的响应速度和吞吐量。特别是在面对I/O密集型操作或者需要长时间运行的任务时表现尤为明显。 #### 实际应用场景中的运用 实际项目里经常可以看到利用多线程优化网络爬虫效率的例子;或是为了加速大规模数据分析而设计的分布式计算框架Hadoop/Spark等工具也大量依赖于这种技术实现高效的数据处理流程。 #### 使用过程中的注意事项 当涉及到共享资源访问控制等问题时要格外小心谨慎,避免死锁现象的发生。同时也要注意合理配置线程数量以防止过度消耗内存空间影响整体性能。 #### 数据库连接池的重要性 针对频繁建立断开数据库链接所带来的额外负担,引入了专门用于管理和重用这些连接对象的技术——即所谓的“数据库连接池”。它可以在一定程度上缓解上述问题带来的负面影响,并进一步改善事务提交的速度与可靠性。 除了以上提到的内容外,还可以关注一些特定领域的知识点比如JVM指令集及其调试命令(`jps`, `jstack`, `jinfo`, `jmap`...),这些都是日常工作中非常实用的小技巧[^3]。 最后但同样重要的是,实践才是检验真理的标准之一。尝试参与开源社区贡献代码或完成个人感兴趣的项目将是巩固所学知识的有效途径[^2]。 ```python print("理论结合实践才能真正掌握一门语言和技术栈") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值