jstack

java jstack tool insufficient memory or insufficient privilege to attach

我的梦境 提交于 2020-01-12 07:35:05
问题 I am really confused about: In my windows 2008r2, I have a windows service, in fact it's a java progress running as SYSTEM user. Now, I use Jstack rawly to the the service. But it occur error : insufficient memory or insufficient privilege to attach But if I use Jstack's options -F , it can work finely. I view the jdk's source, It uses a class BugSpotAgent to finish above. I want to know the root cause I can't use Jstack rawly, is it the SYSTEM user privilege problem? I also have try to use

Java堆栈跟踪工具jstack

☆樱花仙子☆ 提交于 2020-01-06 16:15:37
jstack(Stack Trace for Java) 概述 作用:生成虚拟机当前时刻的线程快照。 线程快照就是当前虚拟机内每一条线程正在执行的方法堆栈的集合。 主要是定位出现长时间停顿的原因,如线程间死锁,死循环,请求外部资源导致的长时间等待。 命令解析 jstack [ option ] vmid -F 正常输出的请求不被相应时,强制输出线程堆栈 -l 除堆栈外,显示关于锁的附加信息 -m 如果调用的本地方法,可以显示C/C++的堆栈 来源: CSDN 作者: 小汪4code 链接: https://blog.csdn.net/qq_32527287/article/details/103843521

jstack命令解析

雨燕双飞 提交于 2020-01-04 02:34:26
jstack用法 /opt/java8/bin/jstack Usage: jstack [-l] <pid> (to connect to running process) 连接活动线程 jstack -F [-m] [-l] <pid> (to connect to a hung process) 连接阻塞线程 jstack [-m] [-l] <executable> <core> (to connect to a core file) 连接dump的文件 jstack [-m] [-l] [server_id@]<remote server IP or hostname> (to connect to a remote debug server) 连接远程服务器 Options: -F to force a thread dump. Use when jstack <pid> does not respond (process is hung) -m to print both java and native frames (mixed mode) -l long listing. Prints additional information about locks -h or -help to print this help message jstack查看输出 /opt

Java forced thread dump programmatically - like “jstack -F -l <PID>”

天大地大妈咪最大 提交于 2020-01-02 17:24:29
问题 I am trying to do a forced java thread dump programmatically, just like the command jstack -F -l <PID> would do it. My best attempt: I created a subclass from sun.jvm.hotspot.tools.JStack overwriting run() with the following code analogous to sun.jvm.hotspot.tools.JStack.run() but in the last line calling start(printstream) instead of start() : StackTrace stacktrace = new StackTrace(mixedMode, concurrentLocks); try { Class<?> stacktraceTool = stacktrace.getClass().getSuperclass(); Method

jstack命令的使用

浪尽此生 提交于 2020-01-01 07:18:19
jstack命令的使用 文章来源:https://blog.csdn.net/wufaliang003/article/details/80414267 jstack是java虚拟机自带的一种堆栈跟踪工具。 jstack用于生成java虚拟机当前时刻的线程快照。线程快照是当前java虚拟机内每一条线程正在执行的方法堆栈的集合,生成线程快照的主要目的是定位线程出现长时间停顿的原因, 如线程间死锁、死循环、请求外部资源导致的长时间等待等。 线程出现停顿的时候通过jstack来查看各个线程的调用堆栈,就可以知道没有响应的线程到底在后台做什么事情,或者 等待什么资源。 如果java程序崩溃生成core文件,jstack工具可以用来获得core文件的java stack和native stack的信息,从而可以轻松地知道java程序是如何崩溃和在程 序何处发生问题。另外,jstack工具还可以附属到正在运行的java程序中,看到当时运行的java程序的java stack和native stack的信息, 如果现在运行的java程序呈现hung 的状态,jstack是非常有用的。 jstack命令: Usage: jstack [-l] <pid> (to connect to running process) jstack -F [-m] [-l] <pid> (to connect to

JVM性能调优监控工具jps、jstack、jmap、jhat、jstat使用详解

懵懂的女人 提交于 2019-12-23 21:20:39
http://www.open-open.com/lib/view/open1390916852007.html JDK本身提供了很多方便的JVM性能调优监控工具,除了集成式的VisualVM和jConsole外,还有jps、jstack、jmap、jhat、jstat等小巧的工具,本博客希望能起抛砖引玉之用,让大家能开始对JVM性能调优的常用工具有所了解。 现实企业级Java开发中,有时候我们会碰到下面这些问题: OutOfMemoryError,内存不足 内存泄露 线程死锁 锁争用(Lock Contention) Java进程消耗CPU过高 ...... 这些问题在日常开发中可能被很多人忽视(比如有的人遇到上面的问题只是重启服务器或者调大内存,而不会深究问题根源),但能够理解并解决这些问题是Java程序员进阶的必备要求。本文将对一些常用的JVM性能调优监控工具进行介绍,希望能起抛砖引玉之用。本文参考了网上很多资料,难以一一列举,在此对这些资料的作者表示感谢!关于JVM性能调优相关的资料,请参考文末。 A、 jps(Java Virtual Machine Process Status Tool) jps主要用来输出JVM中运行的进程状态信息。语法格式如下: jps [options] [hostid] 如果不指定hostid就默认为当前主机或服务器。 命令行参数选项说明如下:

JVM调优之jstack找出最耗cpu的线程并定位代码

北战南征 提交于 2019-12-23 16:03:07
jstack可以定位到线程堆栈,根据堆栈信息我们可以定位到具体代码,所以它在JVM性能调优中使用得非常多。下面我们来一个实例找出某个Java进程中最耗费CPU的Java线程并定位堆栈信息,用到的命令有ps、top、printf、jstack、grep。 第一步先找出Java进程ID,服务器上的Java应用名称为mrf-center: root@ubuntu:/# ps -ef | grep mrf-center | grep -v grep root 21711 1 1 14:47 pts/3 00:02:10 java -jar mrf-center.jar 得到进程ID为21711,第二步找出该进程内最耗费CPU的线程,可以使用 1)ps -Lfp pid 2)ps -mp pid -o THREAD, tid, time 3)top -Hp pid 用第三个,输出如下: TIME列就是各个Java线程耗费的CPU时间,CPU时间最长的是线程ID为21742的线程,用 printf "%x\n" 21742 得到21742的十六进制值为54ee,下面会用到。 OK,下一步终于轮到jstack上场了,它用来输出进程21711的堆栈信息,然后根据线程ID的十六进制值grep,如下: root@ubuntu:/# jstack 21711 | grep 54ee

jstack in mixed mode: WrongTypeException: No suitable match for type of address

删除回忆录丶 提交于 2019-12-23 08:57:51
问题 I'm trying to run jstack on ubuntu in mixed mode: $ jstack -m 7219 The result is this exception: Attaching to process ID 7219, please wait... Debugger attached successfully. Server compiler detected. JVM version is 25.162-b12 Exception in thread "main" java.lang.reflect.InvocationTargetException at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke

interpreting jstack output

杀马特。学长 韩版系。学妹 提交于 2019-12-22 10:15:51
问题 I have a java process loading a lot of data from a bunch of .csv files into a Neo4j database using the BatchInserter . I was using: OpenJDK 7 Ubuntu 12.04 Neo4j 2.0 M3 After loading the first 164 GB (according to ls -lh ) the folder size stopped increasing but the process kept running, no memory was released, and CPU was still at 100% (all according to htop ). The loading process is single threaded, only the JVM is using more than 1 thread - I guess by the ParallelGC . I'm not sure how to

Java线程及Jvm监控工具

£可爱£侵袭症+ 提交于 2019-12-21 07:40:39
Java线程状态 线程的五种状态 * 新建:new(时间很短) * 运行:runnable * 等待:waitting(无限期等待),timed waitting(限期等待) * 阻塞:blocked * 结束:terminated(时间很短) Jvm监控工具 一、jstack 介绍: jstack用于打印出给定的java进程ID或core file或远程调试服务的Java堆栈信息。 如果是在64位机器上,需要指定选项"-J-d64",Windows的jstack使用方式只支持以下的这种方式:jstack [-l] pid 如果java程序崩溃生成core文件,jstack工具可以用来获得core文件的java stack和native stack的信息,从而可以轻松地知道java程序是如何崩溃和在程序何处发生问题。 另外,jstack工具还可以附属到正在运行的java程序中,看到当时运行的java程序的java stack和native stack的信息, 如果现在运行的java程序呈现hung的状态,jstack是非常有用的。 使用: 1、查看运行程序的进程号 2、jstack dump当前线程状态 3、根据当前抓取到的信息进行进一步的分析 二、jvisualvm jdk自带有个jvisualvm工具、该工具是用来监控java运行程序的cpu、内存、线程等的使用情况