我只是想知道是什么解释器在自己的进程中管理线程的内存?
对于VMware虚拟机,当内存紧张时,VMware会在虚拟机中膨胀一个“气球”。这允许来宾操作系统“智能地选择”要交换到磁盘的内存,允许来自该操作系统的内存供其他VM使用。
一个问题是Java,在Java中,操作系统无法“看到/理解”JRE中的内存,当气球膨胀时,来宾操作系统将有效地随机地将内存换出到磁盘,并且可以轻松地换出关键的JRE函数,而不是能够智能地选择要换出的内存位。
我的问题是,在内存管理方面,还有哪些解释器的行为方式与Java相同?
微软的.NET在这方面也是类似的吗?还有其他的翻译吗?
向ted致敬
发布于 2011-04-22 15:30:21
我不确定您是否可以有选择地交换某些线程使用的内存,因为线程和进程之间的主要区别是它们共享公共内存空间,而使用线程而不是进程的原因是它们被认为是更轻量级的,这正是因为您放弃了由操作系统管理的进程隔离。
发布于 2011-07-03 21:01:09
所以你真正要问的是,是否有任何解释器实现了自己的算法来将数据交换到磁盘。据我所知,最近设计的解释器还没有做到这一点--考虑到现在RAM的价格,这并不是对工程资源的很好的利用。(我赞同一种观点,即我们现在也应该考虑抛弃操作系统级的磁盘交换。)
当然,关系数据库系统也会进行自己的磁盘交换,部分原因是它们是在RAM更昂贵的时候设计的,部分原因是它们有时仍然要处理异常大量的数据。
而且,这方面的内存是生锈的,但我几乎可以发誓,至少有一个旧的MUD系统也实现了自己的交换代码;一个大的MUD可能会运行到数十兆字节,在那个时候可能只需要运行几兆字节的内存。
https://stackoverflow.com/questions/5753008
复制相似问题