将Java程序映射到操作系统进程

时间:2012-05-15 22:55:50

标签: java compiler-construction process operating-system callstack

我想知道这是怎么发生的:Java程序如何映射到OS进程(如下面的Linux所示):
borrowed from: linuxjournal.com

在C中,它是如何编写程序以及整个调用堆栈在OS中如何进行的直接关联。我想知道Java中的映射是如何实现的?在对象上调用方法meth():obj,只是转换为定位obj.meth()&的地址。从那时起,堆栈的使用方式与C一样?

提前致谢!

编辑:我也很想知道其他OOP语言通常使用的模型(C ++,Python等)。

2 个答案:

答案 0 :(得分:4)

这是一个非常复杂的问题。关于这个主题,这是一个非常好的article。简而言之,Java有两种执行模式,这极大地影响了内存布局。

  1. 某些代码由intepreter执行
  2. 为了更好的性能,一些代码被编译为本机代码。
  3. 请参阅此Wiki页面:http://en.wikipedia.org/wiki/Just-in-time_compilation

    JVM有更多类型的内存区域,如perm-gen,JIT内存等。

    在其他主题中对此进行了详细讨论:

    1. java and memory layout
    2. jdk1.6 memory layout

答案 1 :(得分:1)

大多数Java JVM都是普通的C程序。因此,图片将与正在解释/执行的第一个类文件相同。

之后,它取决于JVM实现。通常,他们会使用堆栈存储来跟踪控件类型信息,例如加载哪些类,运行哪些线程等。对于实际的“程序”存储,解释器和垃圾收集器将使用普通的“malloc”/“mfree”来分配和释放内存以及一些相当复杂的控制结构以使垃圾收集器能够运行。