当前位置: 首页 > news >正文

Java的jstat命令输出GC信息时携带时间信息(Windows系统中)

之前写了一篇在Linux系统中携带时间的文章:Java的jstat命令输出GC信息时携带时间信息(Linux系统中)
但是很多时候,我们都是在Windows系统中开发,可能有些人没有Linux环境,所以这篇文章就讲一下在Windows系统中jstat命令怎么在输出GC信息的时候携带时间信息。

  1. 使用git bash
    Windows系统是跑不了Linux中的脚本,但是git bash里面是可以执行一部分Linux脚本的。所以可以借助git bash来跑Linux中的脚本。
    jstat -gc 25392 1000 999999 | while read -r line; do timestamp=$(date +"%H:%M:%S"); echo "$timestamp $line"; echo "$timestamp $line" >> one.log; done
    
    更多具体用法可以参考Java的jstat命令输出GC信息时携带时间信息(Linux系统中)这篇文章
    在这里插入图片描述
    在这里插入图片描述
    注意事项
    git bash中,nohup&也是可以用的,并且也是后台运行的意思。但是,他的后台运行只是说你在这个git bash窗口中后台运行,只要你不关闭这个窗口,就会在后台运行,你可以在窗口中输入其他命令执行。如果你关闭这个窗口,就会提示你,还有在运行的会话,是否要全部关闭。如果点击OK,git bash直接退出了,jstat也就关闭了。
    在这里插入图片描述
  2. 使用编程语言调用cmd
    可以借助编程语言,调用cmd来执行语句,然后把输出的结果处理一下,给他加上日期时间等
    import java.io.BufferedReader;
    import java.io.InputStreamReader;
    import java.time.LocalDateTime;public class JStatGcMonitor {public static void main(String[] args) {// 监控的进程IDfinal String pid = "25392";// 输出间隔时间,单位毫秒final int interval = 1000;// 构造命令 如果想一直跑,就可以不加 + " " + 2 次数限制final String command = "jstat -gc " + pid + " " + interval + " " + 2;System.out.println("执行:" + command);try {// 执行命令Process process = Runtime.getRuntime().exec(command);// 获取命令的输出流BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));// 读取并打印输出String line;while ((line = reader.readLine()) != null) {// 获取当前的日期时间,如果只需要时间部分的可以使用LocalTimeLocalDateTime now = LocalDateTime.now();// 这里直接输出,如果需要特定的日期时间格式,可以自己格式化一下System.out.println(now + " | " + line);}reader.close();// 等待子进程结束int exitCode = process.waitFor();System.out.println("cmd脚本执行完毕,退出" + exitCode);} catch (Exception e) {e.printStackTrace();}}
    }
    
    在这里插入图片描述
  3. 使用Windows PowerShell处理
    • 只输出在控制台
      jstat -gc 25580 1000  9999 | foreach{(Get-Date -Format "yyyy-MM-dd HH:mm:ss   ") + $_}
      
      foreachForEach-Object的别名,%也是,所以这三个用哪一个都行。(Get-Date -Format "yyyy-MM-dd HH:mm:ss ")意思是获取当前时间,并格式化,$_是拿到管道符之前的那个命令的输出,在这里把当前时间和输出加起来,就到达了我们需要的效果。
      在这里插入图片描述
    • 输出在控制台的同时保存在文件中
      jstat -gc 25580 1000  9999 | foreach{(Get-Date -Format "yyyy-MM-dd HH:mm:ss   ") + $_} | tee-object one.log
      
      tee-object命令可以将管道符之前输出的内容保存到文件中,并且输出在控制台中,这里面one.log会保存在当前所在的路径。可以使用绝对路径。
      在这里插入图片描述
      在这里插入图片描述
    • 只保存在文件中,控制台不输出
      jstat -gc 25580 1000  9999 | foreach{(Get-Date -Format "yyyy-MM-dd HH:mm:ss   ") + $_} | Out-File two.log
      
      Out-File把前一个输出保存到指定的文件,也可以使用绝对路径
      在这里插入图片描述

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Unity检测鼠标进入、离开UI
  • Gartner发布2024年网络风险管理成熟度曲线:使网络安全战略与业务目标保持一致的概念、方法、流程和技术
  • 突然提示‘由于找不到emp.dll无法继续执行代码’的问题要如何解决?
  • opencv-图像透视变换
  • OpenBayes在线教程 | 当 Llama 3.1 405B 遇上 Mistral Large 2,谁才是大模型赛道的卷王?
  • 『 Linux 』网络基础
  • unity万向锁代数法解释
  • ESP8266使用舵机以及16路PWM舵机PCA 9685的使用方式
  • 【docker】docker容器部署常用服务
  • Qt 跨平台支持任务栏进度条以及自绘消息通知显示
  • 如何使用nodejs的fsPromise.access()判断文件权限
  • git 常用指令(创建分支、提交分支、解决冲突)
  • [设备] 关于手机设备中几种传感器的研究
  • float32转float16、snorm/sunorm8/16 学习及实现
  • 浅析DNS服务器:办公网DNS的架构思路分享
  • Android 初级面试者拾遗(前台界面篇)之 Activity 和 Fragment
  • ES10 特性的完整指南
  • ES6系列(二)变量的解构赋值
  • GDB 调试 Mysql 实战(三)优先队列排序算法中的行记录长度统计是怎么来的(上)...
  • Laravel5.4 Queues队列学习
  • Python爬虫--- 1.3 BS4库的解析器
  • Sass 快速入门教程
  • vue2.0一起在懵逼的海洋里越陷越深(四)
  • Web Storage相关
  • XML已死 ?
  • 从@property说起(二)当我们写下@property (nonatomic, weak) id obj时,我们究竟写了什么...
  • 分享几个不错的工具
  • 高度不固定时垂直居中
  • 力扣(LeetCode)22
  • 前端每日实战 2018 年 7 月份项目汇总(共 29 个项目)
  • 前端性能优化--懒加载和预加载
  • 十年未变!安全,谁之责?(下)
  • 思考 CSS 架构
  • 通过几道题目学习二叉搜索树
  • 系统认识JavaScript正则表达式
  • 一起参Ember.js讨论、问答社区。
  • LevelDB 入门 —— 全面了解 LevelDB 的功能特性
  • ​LeetCode解法汇总1410. HTML 实体解析器
  • ###C语言程序设计-----C语言学习(6)#
  • (160)时序收敛--->(10)时序收敛十
  • (html5)在移动端input输入搜索项后 输入法下面为什么不想百度那样出现前往? 而我的出现的是换行...
  • (PADS学习)第二章:原理图绘制 第一部分
  • (第二周)效能测试
  • (翻译)terry crowley: 写给程序员
  • (考研湖科大教书匠计算机网络)第一章概述-第五节1:计算机网络体系结构之分层思想和举例
  • (离散数学)逻辑连接词
  • (力扣记录)1448. 统计二叉树中好节点的数目
  • (七)c52学习之旅-中断
  • (十二)springboot实战——SSE服务推送事件案例实现
  • (一)ClickHouse 中的 `MaterializedMySQL` 数据库引擎的使用方法、设置、特性和限制。
  • (一)python发送HTTP 请求的两种方式(get和post )
  • ******之网络***——物理***
  • **CI中自动类加载的用法总结
  • .Family_物联网
  • .NET Core 2.1路线图