在Java.lang.Thread中提供了getAllStackTraces()方法用于获取虚拟机中所有线程的StackTraceElement对象。
下面写了个Demo
import java.util.Map;
/**
* Created by wzj on 2017/7/8.
*/
public class MemoryMonitor
{
public static void main(String[] args)
{
for (Map.Entry<Thread,StackTraceElement[]> entry : Thread.getAllStackTraces().entrySet())
{
Thread thread = entry.getKey();
StackTraceElement[] stackTraceElements = entry.getValue();
if (thread.equals(Thread.currentThread()))
{
continue;
}
System.out.println("\n线程: " + thread.getName() + "\n");
for (StackTraceElement element : stackTraceElements)
{
System.out.println("\t" + element + "\n");
}
}