java 写入txt_Java线程转储的8个选项

c324ea09390875934a8908177a4740c0.png

线程转储是诊断CPU尖峰,死锁,内存问题,无响应的应用程序,较差的响应时间以及其他系统问题的重要工件。

有很多很棒的在线线程转储分析工具,可以分析和发现问题。但是对于那些工具,您需要提供适当的线程转储作为输入。因此,在本文中,我记录了7种不同的选项来捕获线程转储。

1. jstack

“ jstack”是捕获线程转储的有效命令行工具。jstack工具位于JDK_HOME bin文件夹中。这是捕获线程转储所需发出的命令:

jstack -l <pid> > <file-path>

哪里:

pid:是应用程序的进程ID,应捕获其线程转储

file-path:是将写入线程转储的文件路径。

例:

jstack -l 37320 > /opt/tmp/threadDump.txt

按照示例,该过程的线程转储将在/opt/tmp/threadDump.txt文件中生成。

自Java 5以来,JDK中已包含Jstack工具。如果您在旧版Java中运行,请考虑使用其他选项

2.kill-3

在大型企业中,出于安全原因,只有JRE安装在生产机器中。由于jstack和其他工具只是JDK的一部分,因此您将无法使用jstack。在这种情况下,可以使用“ kill -3”选项。

kill -3 <pid>

哪里:

pid:是应用程序的进程ID,应捕获其线程转储

例:

Kill -3 37320

使用'kill -3'选项时,线程转储将发送到标准错误流。如果要在tomcat中运行应用程序,则线程转储将发送到<TOMCAT_HOME> /logs/catalina.out文件中。

注意:据我所知,大多数* nix操作系统(Unix,Linux,HP-UX操作系统)都支持此选项。不确定其他操作系统。

3. JVisualVM

Java VisualVM是一种图形用户界面工具,可在应用程序在指定的Java虚拟机(JVM)上运行时提供有关这些应用程序的详细信息。它位于JDK_HOME bin jvisualvm.exe中。自JDK 6更新7.s起,它是Sun JDK发行版的一部分。

启动jvisualvm。在左侧面板上,您会注意到计算机上正在运行的所有Java应用程序。您需要从列表中选择您的应用程序。该工具还具有从远程主机上运行的Java进程中捕获线程转储的功能。

4.Java Mission Control

Java Mission Control(JMC)是一种工具,可从本地运行或部署在生产环境中的Java应用程序收集和分析数据。自Oracle JDK 7 Update 40起,该工具已打包到JDK中。该工具还提供了从JVM进行线程转储的选项。JDK_HOME bin jmc.exe中存在JMC工具

启动该工具后,您将看到本地主机上正在运行的所有Java进程。注意:JMC还具有与远程主机上运行的Java进程连接的能力。现在,在左侧面板上,单击要进行线程转储的Java进程下方列出的“ Flight Recorder”选项。

5. Windows(按Ctrl + Break)

此选项仅在Windows操作系统中有效。

· 选择已启动应用程序的命令行控制台窗口。

· 现在,在控制台窗口上,发出“ Ctrl + Break ”命令。

这将生成线程转储。线程转储将被打印在控制台窗口本身上。

注1:在几台笔记本电脑(例如我的Lenovo T系列)中,“ Break”键被拔下。在这种情况下,您必须在Google上找到“ Break”的等效键。在我的情况下,事实证明“功能键+ B”等效于“断裂”键。因此,我不得不使用“ Ctrl + Fn + B”来生成线程转储。

注意2:但是这种方法的一个缺点是线程转储将打印在Windows控制台本身上。如果不以文件格式获取线程转储,则很难使用线程转储分析工具(例如http://fasthread.io)。因此,当您从命令行启动应用程序时,将输出重定向到文本文件,即示例,如果您正在启动应用程序“ SampleThreadProgram”,则将发出以下命令:

java -classpath . SampleThreadProgram

而是像这样启动SampleThreadProgram

java -classpath . SampleThreadProgram > C:workspacethreadDump.txt 2>&1

因此,当您发布“ Ctrl + Break”时,线程转储将发送到C: workspace threadDump.txt文件。

6. ThreadMXBean

从JDK 1.5开始,引入了ThreadMXBean。这是Java虚拟机中线程系统的管理接口。使用此接口,您还可以生成线程转储。您只需编写几行代码即可以编程方式生成线程转储。下面是ThreadMXBean实现的框架实现,该实现从应用程序生成Thread dump。

public void dumpThreadDump() {

ThreadMXBean threadMxBean = ManagementFactory.getThreadMXBean();

for (ThreadInfo ti : threadMxBean.dumpAllThreads(true, true)) {

System.out.print(ti.toString());

}

}

7. APM工具– App Dynamics

很少有应用程序性能监视工具提供生成线程转储的选项。如果要通过App Dynamics(APM工具)监视应用程序,则以下是捕获线程转储的说明:

1.创建一个动作,在“创建动作”窗口中选择“ 诊断”->“执行线程转储 ”。
2.输入操作名称,要采样的数量以及线程转储之间的间隔(以毫秒为单位)。
3.如果要在启动线程转储操作之前需要批准,请选中“在此操作之前需要批准”复选框,然后输入被授权批准该操作的个人或组的电子邮件地址。有关更多信息,请参见需要批准的操作。
4.单击确定

8. JCMD

jcmd工具是随Oracle Java 7引入的。它对解决JVM应用程序的问题很有用。它具有多种功能,例如,识别Java进程ID,获取堆转储,获取线程转储,获取垃圾收集统计信息等等。

使用以下JCMD命令,可以生成线程转储:

jcmd <pid> Thread.print > <file-path>

哪里

pid: 是应用程序的进程ID,应捕获其线程转储

file-path: 是将写入线程转储的文件路径。

例:

jcmd 37320 Thread.print > /opt/tmp/threadDump.txt

按照示例,该过程的线程转储将在/opt/tmp/threadDump.txt文件中生成。

结论

即使列出了7个不同的选项来捕获线程转储,恕我直言,最好还是使用1.'jstack'和2.'kill -3'。因为他们是:

一种。简单(直接,易于实现)

b。通用(在大多数情况下均可运行,与操作系统,Java供应商,JVM版本等无关)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/486448.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

重磅!2020年度人类社会发展十大科学问题发布

来源&#xff1a;科技导报 在11月9日下午的第二届世界科技与发展论坛的闭幕式上&#xff0c;中国工程院院士、清华大学教授、《Research》编委周济和《柳叶刀》主编&#xff0c;爱思唯尔柳叶刀系列期刊总编辑、理查德霍顿共同发布了“2020年度人类社会发展十大科学问题”。本次…

前端导出excel文件带样式_vue前端使用xlsx导出数据到excel中--最简单的方式

最新项目中需要将页面数据导出到excel中&#xff0c;首先想到的就是度娘&#xff0c;得到的结果都是千篇一律&#xff0c;答案都是你复制我我复制你的&#xff0c;虽然能解决问题&#xff0c;但是这个过程也太复杂。既然无法改变&#xff0c;那就只好插手你的生活了。废话少说&…

7种情绪,人类心智的通用模块

来源&#xff1a;混沌巡洋舰1859年&#xff0c;达尔文以一个挑衅性的断言结束了他的《物种起源》&#xff0c;那就是‘人类的起源和他的历史将会被&#xff08;进化&#xff09;点亮’。在他的后期著作《人类的由来》(1和《人类与动物的情感表达》中&#xff0c;达尔文阐明了人…

gitbook mysql_使用Gitbook做笔记

一、安装# 通过npm全局安装npm install gitbook-cli -g# 查看版本gitbook --version二、创建一本书2.1 本地创建# 创建一个文件夹mkdir mysql-note# 初始化cd mysql-notegitbook init# 会创建两个文件# README.md 书皮# SUMMARY.md 目录# 从本地打开这本书gitbook serve# 将md文…

03、数据类型(02)

字典&#xff08;dict&#xff09; 字典是一种映射型的数据类型&#xff0c;每个元素成对出现&#xff0c;即key- value,每对元素key 和 value“&#xff1a;”冒号分开&#xff0c;元素之间用逗号隔开&#xff0c;整个字典包括子在{}中。 字典中的“key”必须是不可变类型&am…

器官复刻、脑机接口、电子皮肤…这些前沿科学或改写人类未来

来源&#xff1a;MEMS“2020年&#xff0c;新冠疫情爆发&#xff0c;面对困境&#xff0c;我们采取的行动将很可能改写这个时代。” 11月7日&#xff0c;2020腾讯科学WE大会线上举行。腾讯首席探索官网大为在开场演讲中表示&#xff0c;前沿科学突破能帮助我们做好准备拥抱未来…

GPT-3:人工智能的新突破

来源&#xff1a;王宏琳科学网博客在过去几个月里&#xff0c;占据海外科技新闻头条主导地位的、人工智能领域最令人兴奋的新事物之一是GPT-3——OpenAI的新的文本生成程序&#xff0c;一种由神经网络驱动的语言模型&#xff0c;一个根据人类用户的提示自动生成文本的人工智能引…

把 mysql 整个加载进内存磁盘中_MySQL 缓冲池 是什么?

Mysql 中数据是要落盘的&#xff0c;这点大家都知道。读写磁盘速度是很慢的&#xff0c;尤其和内存比起来更是没的说。但是&#xff0c;我们平时在执行 SQL 时&#xff0c;无论写操作还是读操作都能很快得到结果&#xff0c;并没有预想中的那么慢。可能你会说我有索引啊&#x…

Cell重磅:记忆研究的突破进展!在诺奖成果基础上,用“全光学”组合来“操纵记忆”...

来源&#xff1a;brainnews这项发表在《细胞》杂志上的研究&#xff0c;解释了研究人员如何利用双光子钙成像和双光子光遗传学的“全光学”组合&#xff0c;同时读写小鼠“位置细胞”&#xff08;神经元的一种&#xff09;中的活动&#xff0c;而这种细胞可以在虚拟现实环境中进…

mysql like 多个条件_千万级MySQL数据库这样建索引可以让你的数据库飞起来.........

创建索引常用规则1、表的主键、外键必须有索引&#xff1b;2、数据量超过300的表应该有索引&#xff1b;3、经常与其他表进行连接的表&#xff0c;在连接字段上应该建立索引&#xff1b;4、经常出现在Where子句中的字段&#xff0c;特别是大表的字段&#xff0c;应该建立索引&a…

mysql主从配置访问_Mysql主从配置,实现读写分离

大型网站为了软解大量的并发访问&#xff0c;除了在网站实现分布式负载均衡&#xff0c;远远不够。到了数据业务层、数据访问层&#xff0c;如果还是传统的数据结构&#xff0c;或者只是单单靠一台服务器扛&#xff0c;如此多的数据库连接操作&#xff0c;数据库必然会崩溃&…

靠脑机接口“隔空探物”,大脑植入芯片可实现“心灵感应”

来源&#xff1a;脑极体1979年&#xff0c;在四川大足县的12岁农村少年唐雨突然具有了“耳朵识字”的神通。原本是当地的一件稀罕的谈资&#xff0c;结果后来引起了当地媒体的报道&#xff0c;后来又居然经过中国的权威科技期刊《自然杂志》的“确证”和香港《明报》&#xff0…

android app 适应不同大小屏幕_移动APP测试:Android屏幕适配问题二

设计选择性的布局和图片&#xff0c;替代资源的类型&#xff0c;取决于应用程序的需求。通常&#xff0c;应该使用尺寸和方向限定符提供选择性的布局资源&#xff0c;使用密度限定符提供选择性的图片资源。以下部分分别概括了该如何使用尺寸和密度限定符提供选择性的布局和图片…

使用node中的express解决vue-cli加载不到dev-server.js的问题

在使用vue开发过程中&#xff0c;难免需要去本地数据地址进行请求&#xff0c;而原版配置在dev-server.js中&#xff0c;新版vue-webpack-template已经删除dev-server.js&#xff0c;改用webpack.dev.conf.js代替&#xff0c;所以 配置本地访问在webpack.dev.conf.js里配置即可…

脑机接口:从基础科学到神经康复

本文转自公众号&#xff1a;脑机接口社区大家好 &#xff0c;我是米格尔尼科莱利斯&#xff0c;美国杜克大学神经生物学、神经学和生物医学工程教授。今天我将为大家介绍脑机接口和这一技术从基础科学到应用于神经康复的研究历程。首先&#xff0c;我要感谢2020腾讯科学WE大会的…

从Airbnb的发展历程和网易云的大起大落看IT行业创新(第5周课后作业)

我想先根据个人看法回答“创新是什么&#xff1f;”这个空泛的问题。创新是面对当下的资源条件限制创造出能够满足动态需求或解决动态发展中的问题的新策略。这种实用化定义在大部分邻域都勉强能让定义者自圆其说&#xff0c;对于IT行业算是比较贴切&#xff0c;但是当我们把创…

c++ map 自定义排序_Java学习笔记:Map集合介绍

在介绍它之前先来看看再API文档中是如何介绍它的&#xff0c;看图片&#xff1a;由图片可以看出&#xff0c;Map属于双列集合&#xff0c;每次可以添加一对数据&#xff0c;并且这两个数据具有映射关系。单列集合和双列集合区别一、Map继承体系1.HashMap&#xff1a;存储数据采…

《智能网联汽车技术路线图 2.0》重磅发布

全文共计3644字&#xff0c;预计阅读时间8分钟来源 | 国汽智联&#xff08;转载请注明来源&#xff09;编辑 | 蒲蒲11月11日&#xff0c;由北京市人民政府、工业和信息化部、公安部、交通运输部、中国科学技术协会共同主办的2020世界智能网联汽车大会召开。大会现场&#xff0c…

毕设ssm商城系统_ssm商城系统(爱淘淘购物)项目源码

ssm商城系统(爱淘淘购物)项目演示本系统采用SSM架构来搭建。服务器&#xff1a;tomcat7java虚拟机&#xff1a;jdk1.7数据库&#xff1a;mysql前端&#xff1a;Vue Bootstrap管理员用户&#xff1a;root root普通用户&#xff1a;jack 123访问路径&#xff1a;http://localho…

科学就是要勇于承认错误:十大错误科学结论盘点

来源&#xff1a; 学术头条人们不会迷信权威&#xff0c;但是大部分会相信“科学”。如何科学地饮食&#xff1f;如何科学地工作&#xff1f;如何科学地休息&#xff1f;“科学”两个字成了人们确认自己正确生活的最大保障。但如果“科学”不正确&#xff0c;那又会怎样呢&…