如何使用另一个程序访问程序的堆空间?

问题描述 投票:2回答:2

考虑到我已经执行了一个程序并创建了一个类的实例,

MyClass mClass = new MyClass()

执行后,参考空间将存储在堆空间中。现在,我想编写一个程序,该程序可以访问堆空间以从先前创建的另一个程序实例中检索数据。我可以吗?

谢谢

memory operating-system heap
2个回答
1
投票

没有您将永远无法访问另一个进程的内存。

但是,一个进程可以建立另一个进程可以读取的shared memory区域,但这需要这些进程之间进行合作。而且,它仍然不能使进程直接访问另一个进程的堆,它只能看到另一个进程显式移动到共享区域中的内容(因此,在您的示例中,您必须将数据从堆复制到共享内存,或者将其放在共享内存中开始,这可能不是一个好主意。]

请注意,虽然您无法更改new的行为(据我所知),但没有什么阻止您编写代码来手动管理堆的;从这种意义上讲,可以将堆直接放置在共享内存区域中。这是否明智是另一个问题,并且显然高度依赖于上下文。

为了完全了解操作系统如何管理内存,您必须了解virtual memorymemory management hardware(不过,您可能想比Wikipedia更深入)。


1
投票

好吧,我认为您可以使用套接字来访问堆空间。我希望这能奏效。

© www.soinside.com 2019 - 2024. All rights reserved.