Java jstack命令中的框架是什么
我试图通过查看java命令Java jstack命令中的框架是什么,java,c++,jstack,Java,C++,Jstack,我试图通过查看java命令jstack来理解它,它说: jstack打印给定Java的Java线程的Java堆栈跟踪 进程或核心文件或远程调试服务器。对于每个Java帧, 完整的类名、方法名、“bci”(字节码索引)和行 如果可用,则打印编号。使用-m选项,jstack打印 所有线程的Java和本机框架以及“pc” (程序计数器)。对于每个本机帧,最接近的本机符号 打印“pc”(如果可用)。C++的名字并不是散乱的。 若要删除C++名称,则可以将此命令的输出传递到 c++过滤器 我有一些疑问,请
jstack
来理解它,它说:
jstack打印给定Java的Java线程的Java堆栈跟踪
进程或核心文件或远程调试服务器。对于每个Java帧,
完整的类名、方法名、“bci”(字节码索引)和行
如果可用,则打印编号。使用-m选项,jstack打印
所有线程的Java和本机框架以及“pc”
(程序计数器)。对于每个本机帧,最接近的本机符号
打印“pc”(如果可用)。C++的名字并不是散乱的。
若要删除C++名称,则可以将此命令的输出传递到
c++过滤器
我有一些疑问,请帮助我理解这个命令
1) Is core file只是我要打印堆栈跟踪的文件名,还是
不同?这里什么是远程调试服务器?我们如何使用或配置它
2) 在此上下文中,什么是Java框架,什么是线程的本机框架
3) 我之前在学习微处理器的时候了解了程序计数器,但Java的应用程序也是同样的概念吗
4) 最接近pc的本机符号是什么意思?另外,C++是如何在java中使用的,我在学习java时从来没有遇到过C++。
请澄清,提前谢谢
jstack
可以附加到实时运行的程序,也可以从核心转储读取“框架”是“堆栈框架”,是分配来表示调用方法的实例的存储。它包含参数、方法的局部变量、返回地址等。“本机框架”显然是为本机方法分配的堆栈框架(相对于Java方法)。非常感谢您的澄清。这意味着文档中说C/C++是本机代码?你能告诉我native是什么意思吗?为什么Java需要它?它可能是一个简单的问题,但请帮助我理解。是的,“本地代码”通常是用C或C++编写的,JVM本身是本地代码(并且您还可以通过JNI执行用户提供的本地代码)。它是必需的,因为JVM只是一个虚拟机,所以它需要在某处实现!