两种语言在ram上使用相同的堆栈和堆吗?

2024-05-14 22:03:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在阅读关于python内存分配的文章,想知道java和python是否安装在同一个计算机系统中,那么java和python是使用相同的堆栈和堆,还是在RAM中为它们分配了不同的堆栈和堆

谁能帮我澄清我的疑问

提前谢谢


Tags: 内存堆栈文章javaram计算机系统
2条回答

即使是实现细节,系统上的每个线程都有自己的堆栈。堆是70年代分段模型的一个映像,除了现代操作系统上的Java进程外,它对任何进程都没有意义:当进程需要更多内存时,它只向内核请求内存,没有预分配的堆。从某种意义上说,系统中的所有进程(Java进程除外)共享相同的可用内存池,但它不是所谓的堆

Java是不同的,因为Java程序在JVM中执行,JVM有其分配的内存,并且进程不需要系统内存。因此,在JVM中,整个进程都有一个堆,每个线程都有一个堆栈。如果您启动2个独立的Java程序,您将拥有2个独立的JVM,每个JVM都有自己的堆

两个不同的程序从不使用同一堆。它们各自获得一部分虚拟地址空间,这些地址空间在数字上可能以某种方式重叠,但它们是独立的。当一个程序实际上需要将页面放在RAM中时,它会以一种惰性的方式分配它们,通常分配4KB(可能更大)。这是通过Page Table实现的,它能够将虚拟地址空间映射到Physycal一(也可能是交换)

你可能需要明白,你并不需要所有的东西,所有的时间都在RAM中。您的代码可以完成一小部分,然后将RAM中的空间提供给其他人,甚至可以进行交换

相关问题 更多 >

    热门问题