Memory management 哪些解释器在自己的进程中管理线程的内存?

Memory management 哪些解释器在自己的进程中管理线程的内存?,memory-management,Memory Management,我只是想知道是什么解释器在自己的进程中管理线程的内存 对于VMware虚拟机,当内存紧张时,VMware将在VM内膨胀一个“气球”。这允许来宾操作系统“智能地选择”要交换到磁盘的内存,从而允许来自该操作系统的内存供其他虚拟机使用 一个问题是Java,操作系统无法“看到/理解”JRE中的内存,当气球膨胀时,来宾操作系统将有效地将内存随机交换到磁盘,并且可以轻松地交换关键的JRE功能,而不是智能地选择要交换的内存位 我的问题是,在内存管理方面,还有哪些解释器的行为与Java相同 微软.NET在这方面

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

对于VMware虚拟机,当内存紧张时,VMware将在VM内膨胀一个“气球”。这允许来宾操作系统“智能地选择”要交换到磁盘的内存,从而允许来自该操作系统的内存供其他虚拟机使用

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

我的问题是,在内存管理方面,还有哪些解释器的行为与Java相同

微软.NET在这方面类似吗?还有其他口译员吗

问候
ted

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

所以您真正要问的是,是否有解释器实现了自己的算法来将数据交换到磁盘。据我所知,最近设计的解释器没有这样做——考虑到当今RAM的价格,这不是对工程资源的良好利用。(我有一个想法,我认为我们现在应该考虑扔掉操作系统级的磁盘交换。) 当然,关系数据库系统自己进行磁盘交换,部分原因是它们是在RAM更昂贵的时候设计的,部分原因是它们有时仍然处理异常大的数据量


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

Hi Thilo,谢谢你的回复。我特别想知道Java以外的其他解释器是如何工作的?你好,泰德。@泰德:那么你是在问其他解释器是否使用操作系统级进程而不是线程来并发执行?嗯,更像其他解释器以Java相同的方式管理内存?也就是说,操作系统无法看到/理解解释器内存方面的情况?我听说Microsoft.NET在.NET管理内存的方式上类似于Java?Bump?对这个问题还有其他看法吗?