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

Memory 如何使用另一个程序访问程序的堆空间?,memory,operating-system,heap,Memory,Operating System,Heap,假设我执行了一个程序并创建了一个类的实例 MyClass mClass = new MyClass() 执行后,引用空间将存储在堆空间中。现在我想写一个程序,它可以访问堆空间,从先前创建的另一个程序实例中检索数据。 我能做吗 谢谢据我所知,实际上没有。如果您授予其他程序管理员权限,您可以读取另一个程序的内存,但据我所知,无法确定该程序的堆位于何处。(实现这一点可能有很多黑客方法,但它既不美观也不可靠) 但是,一个进程可以建立另一个进程可以读取或使用套接字的区域,但这需要进程之间的合作。而且,它

假设我执行了一个程序并创建了一个类的实例

MyClass mClass = new MyClass()
执行后,引用空间将存储在堆空间中。现在我想写一个程序,它可以访问堆空间,从先前创建的另一个程序实例中检索数据。 我能做吗


谢谢

据我所知,实际上没有。如果您授予其他程序管理员权限,您可以读取另一个程序的内存,但据我所知,无法确定该程序的堆位于何处。(实现这一点可能有很多黑客方法,但它既不美观也不可靠)

但是,一个进程可以建立另一个进程可以读取或使用套接字的区域,但这需要进程之间的合作。而且,它仍然不允许进程直接访问另一个进程的堆-您的程序只能看到另一个进程让它看到的内容

请注意,虽然您不能更改
new
的行为(据我所知),但没有任何东西阻止您编写代码来手动管理堆;从这个意义上讲,可以将堆直接放在共享内存区域中。这是否明智是另一个问题,显然,这在很大程度上取决于环境


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

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