什么解释器在自己的进程中管理其线程的内存?

时间:2011-04-22 06:52:21

标签: memory-management

我只是想知道解释器在自己的进程中管理其线程的内存是什么?

使用VMware虚拟机,当内存紧张时,VMware将在虚拟机内部膨胀“气球”。这允许客户操作系统“智能地选择”交换到磁盘的内存,允许其他虚拟机使用该操作系统的内存。

一个问题是Java,操作系统无法“查看/理解”JRE内部的内存,当气球膨胀时,客户操作系统将有效地随机将内存交换到磁盘,并可轻松更换关键的JRE功能而不是能够智能地选择要换出的内存位。

我的问题是,其他解释器的行为与Java围绕内存管理的行为方式相同吗?

Microsoft .NET在这方面是否相似?还有其他口译吗?

此致 泰德

2 个答案:

答案 0 :(得分:0)

我不确定你是否可以选择性地交换某些线程使用的内存,看到线程和进程之间的主要区别在于它们共享一个公共内存空间,并且在进程上使用线程的原因是它们是被认为更轻量级,正是因为您放弃了操作系统管理的进程隔离。

答案 1 :(得分:0)

所以你真正要问的是,是否有任何解释器实现了自己的算法来交换数据到磁盘。据我所知,最近设计的翻译没有这样做 - 考虑到现在RAM的价格,它并不能很好地利用工程资源。 (我订阅了一个思想流派,我们现在应该考虑抛弃操作系统级别的磁盘交换。)

关系数据库系统当然会进行自己的磁盘交换,部分原因是它们是在RAM较贵的情况下设计的,部分原因是它们有时会处理异常大量的数据。

并且,内存在这个上很生疏,但我几乎可以发誓,至少有一个旧的MUD系统也实现了自己的交换代码;一个大的MUD可以运行到几十兆字节,而那些日子可能只需要几兆内存。