我将尝试通过online document for jstack在那里说要了解java命令jstack
:Java线程对于给定的Java 进程或核心什么是jstack命令帧
jstack打印的Java堆栈跟踪文件或远程调试服务器。对于每个Java框架,打印完整的类名称,方法名称,'bci'(字节代码索引)和 号码(如果可用),则为 。使用-m选项,jstack将打印 所有线程的Java和本机帧以及'pc' (程序计数器)。对于每个本地帧,打印出最接近 'pc'的本机符号(如果可用)。 C++ mangled名称不会被取消。 要取消C++名称的命名,可以将此命令的输出传送至 C++ filt。
我有些疑惑,请帮我理解这个命令。
1)核心文件是我想要打印堆栈跟踪的文件的名称,还是与 不同?什么是远程调试服务器在这里,我们如何使用它或配置?
2)这个上下文中的Java Frame是什么?线程的本地框架是什么?
3)当我学习微处理器时,我已经了解了有关程序计数器的知识,但是它也是与Java相同的概念应用程序吗?
4)最接近原生符号到PC的含义是什么?另外,在Java中如何使用C++,我在学习Java时从来没有遇到过C++。
请澄清,在此先感谢。
“框架”是一个“堆栈框架”是分配的存储器来表示调用方法的实例。它包含参数,方法的局部变量,返回地址等。“native frame”显然是为本地方法(与Java方法)分配的堆栈帧。 –