![](/img/trans.png)
[英]how operating system(linux) kills java program ? What happens to the jvm when I hard kill a java process?
[英]Mapping a Java program to an Operating System process
我想知道这是怎么发生的:如何将Java程序映射到OS进程(如下面的Linux所示):
在C中,它是如何编写程序以及整个调用堆栈在OS中如何进行的直接关联。 我想知道Java中的映射是如何实现的? 在对象上调用的方法meth():obj,只是转换为定位obj.meth()的地址并从那时开始在堆栈中使用它在C中的方式吗?
提前致谢!
编辑:我也很想知道其他OOP语言通常使用的模型(C ++,Python等)。
这是一个非常复杂的问题。 这是一篇关于这个主题的非常好的文章 。 简而言之,Java有两种执行模式,这极大地影响了内存布局。
请参阅此Wiki页面: http : //en.wikipedia.org/wiki/Just-in-time_compilation 。
JVM有更多类型的内存区域,如perm-gen,JIT内存等。
在其他线程中对此进行了详细讨论:
大多数Java JVM都是普通的C程序。 因此,图片将与正在解释/执行的第一个类文件相同。
之后,它取决于JVM实现。 通常,他们会使用堆栈存储来跟踪控件类型信息,例如加载哪些类,运行哪些线程等。对于实际的“程序”存储,解释器和垃圾收集器将使用普通的“malloc”/“mfree”来分配和释放内存以及一些相当复杂的控制结构以使垃圾收集器能够运行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.