java - 对两个 java 实例进行 strace

标签 java execution system-calls strace

我想跟踪java进程的执行情况。 为此,我使用 strace 来分析它。

我已经编写了两个基本程序。

Prog1:简单的 Hello World

Prog2:使用大量 Sysout 进行素数计算。我所说的很多真的是很多!!

我正在使用 strace:strace java classfile

两个程序都工作正常。但是,当我比较它们的 strace 时,它​​们的输出是相同的,即系统调用及其顺序。

我的疑问是:

  1. 这背后的原因是什么?
  2. strace java 程序的正确方法是什么?
  3. 正在打印的语句不是 strace 的一部分...实际上 strace 输出中没有 write 系统调用?

最佳答案

默认情况下,程序strace不跟踪子进程。然而,Java VM 在进程的早期创建了一个用于实际工作的子进程。这就是为什么两个不同的程序在使用 strace 调用时生成相同结果的原因。

要同时跟踪子进程,请使用选项 -fstrace,即:

strace -f java Hello

关于java - 对两个 java 实例进行 strace,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22131044/

相关文章:

c++ - Online Compiler - 在等待输入时拦截程序并自动输入

javascript - JavaScript 什么时候执行?

c++ - 从 C++ 使用 tar 创建压缩文件

linux - 如何使用 Linux 系统调用检测何时按下某个键

java - 在 Java 中使用 C 代码的快速步骤

java - Jaxb2Marshaller 和原始类型

java - 如何从文件夹对象列表中递归获取绝对路径?

java - 如何在Arraylist上正确添加Google Map上的添加标记

Javascript - 函数声明之间的区别

javascript - 一种从 Node.js 调用 execl、execle、execlp、execv、execvP 或 execvp 的方法