关于RAM和堆栈

时间:2020-09-13 09:06:54

标签: stack ram

假设我们已经在手机中打开了一个应用程序。据我所知,我们打开的任何应用程序都涉及RAM。 1)它将存储在堆栈中吗?

  1. 什么决定了从RAM占用多少内存?

  2. 应用程序的大小(我是说我们在下载例如Eg时从Play商店看到应用程序的大小:13MB)和RAM占用的大小是否相同?如果不是,这两个大小是什么?

2 个答案:

答案 0 :(得分:0)

  1. 堆栈是分配给一部分内存的名称。当您运行一个程序时,每个程序都有其自己的虚拟地址空间,我说是虚拟的,因为其他程序也可以具有相同的地址!但是操作系统负责将不同进程的虚拟地址映射到RAM中的实际地址。现在,堆栈是虚拟地址中存储局部变量的空间。它从高值地址空间增长到低值。我已经大大简化了。

虚拟寻址用于维持抽象级别,程序不应获得对实内存的自由访问,操作系统应能够控制它并保持其安全性。

  1. 这取决于程序的进程,运行的代码。它创建的变量,它调用的函数。取决于它会请求那么多页面,

(内存寻址是通过页面或部分内存来处理的,一个页面通常包含2个字节的幂。因此,虚拟页面1的地址范围可以是0到1023,虚拟页面2的地址范围可以是1024到2047,并且此虚拟页面2可以映射到地址为2048到3071的真实页面3)。您可以阅读更多内容。

,操作系统将批准该请求。它也会动态变化。

  1. 应用程序的大小是文件大小或内容的大小。这存储在磁盘/存储中。它是静态的,将是相同的,通常包括游戏文件,图像等。 在运行程序时,我们并没有加载所有这些,只是我们需要的。执行程序时,所需的内存与代码/文件大小的大小不同。

答案 1 :(得分:0)

  1. 堆栈用于运行应用程序的某些命令,例如嵌套模块调用和计算算术公式。
  2. 使用的特定算法和计算,应用程序图形,输入和输出大小,...影响内存使用。
  3. 不,第一个是应用程序的安装包大小,第二个是运行它所需的RAM大小,并且在执行过程中可能会有所不同。
相关问题