Jvm 在JRuby中隔离线程的内存

Jvm 在JRuby中隔离线程的内存,jvm,jruby,Jvm,Jruby,我们目前正在使用JRuby运行Resque,并且存在内存泄漏问题。Resque和Ruby/REE的一个优点是,它使用了fork语义,将内存泄漏隔离到每个作业,而不是每个VM(每个作业的fork) 看起来JVM分叉的选项不太合理,但是想知道是否可以通过将内存隔离到线程来做一些事情,因此在线程中发生停止事件时,该线程创建的所有内存都会被销毁,不管是否仍然有对它的引用。线程肯定不是进程。如果您使用的是线程,那么您将与进程的其余部分共享一个公共内存池,因此实际上没有任何“由该线程创建的内存”的概念。可以

我们目前正在使用JRuby运行Resque,并且存在内存泄漏问题。Resque和Ruby/REE的一个优点是,它使用了fork语义,将内存泄漏隔离到每个作业,而不是每个VM(每个作业的fork)


看起来JVM分叉的选项不太合理,但是想知道是否可以通过将内存隔离到线程来做一些事情,因此在线程中发生停止事件时,该线程创建的所有内存都会被销毁,不管是否仍然有对它的引用。

线程肯定不是进程。如果您使用的是线程,那么您将与进程的其余部分共享一个公共内存池,因此实际上没有任何“由该线程创建的内存”的概念。可以实现虚拟机,使线程获得自己的内存空间,但在JRuby的例子中,它首先会挫败使用本机线程的许多好处


我的建议是与JRuby团队(例如我)合作,找出泄漏的原因,然后我们会修复它。MRI方法是一种难看的创可贴,它只会让人们对代码中的内存和资源管理感到懒惰。

线程当然不是进程。如果您使用的是线程,那么您将与进程的其余部分共享一个公共内存池,因此实际上没有任何“由该线程创建的内存”的概念。可以实现虚拟机,使线程获得自己的内存空间,但在JRuby的例子中,它首先会挫败使用本机线程的许多好处

我的建议是与JRuby团队(例如我)合作,找出泄漏的原因,然后我们会修复它。MRI方法是一种难看的创可贴,它只会让人们对代码中的内存和资源管理感到懒惰。