我正在尝试生成有关 HashMap.put 函数的问题。我编写了一个测试代码,它将运行 100 多个线程。通过使用 jstack 或 kill 我能够获取我的进程的特定线程的线程转储。 .问题是我无法立即捕获线程转储,我希望将所有线程转储记录在一个文件中,直到进程结束。是否有任何 linux 命令或 shell 脚本可以编写来执行此操作?
问问题
5417 次
1 回答
1
#!/bin/bash
if [ $# -eq 0 ]; then
echo >&2 "Usage: jstackSeries [ <count> [ <delay> ] ]"
echo >&2 " Defaults: count = 10, delay = 1 (seconds)"
exit 1
fi
pid=$1 # required
count=${2:-10} # defaults to 10 times
delay=${3:-1} # defaults to 1 second
while [ $count -gt 0 ]
do
jstack $pid >jstack.$pid.$(date +%H%M%S.%N)
sleep $delay
let count--
echo -n "."
done
参考这里:
http://howtodoinjava.com/2012/12/19/how-to-get-thread-dump-in-linux-using-jstack/
于 2012-12-20T05:58:41.720 回答