Hea*_*rth 18 memory graphics-card
我的笔记本电脑有一个带有专用视频 RAM 的不错的 GPU。但是我在玩 Minecraft 时注意到计算机似乎没有使用它做任何事情。根据 Windows 任务管理器,仅使用了大约 100 MB,而它占用了我常规 RAM 的一半左右。
我原以为 VRAM 将用于存储模型和纹理等内容,这将减少对常规 RAM 的需求;如果这是真的,纹理和模型一定比我想象的要小得多。(请注意,这是一个经过大量修改的安装,比标准的 Minecraft 具有更复杂的模型和纹理。)
如果这不是真的,什么是使用VRAM的?有什么办法可以让我的电脑更好地使用它?
Sam*_*bis 36
视频 RAM 专门用于存储渲染视频帧所需的任何内容。在玩游戏时,这包括纹理、模型和其他特定于图形的数据,如着色器信息和光照贴图。通常,这些数据都不会像您提到的那样存储在主系统 RAM 中,尽管 VRAM 并不是专门为减少对常规 RAM 的需求而设计的。
Minecraft 与大多数游戏有点不同。我假设您正在玩 PC 的 Java 版本。与通常用于编写其他游戏的 C 或 C++ 等其他语言相比,Java 是一种(相对)高级编程语言。因此,在内存使用要求方面,Java 天生就处于劣势。这就是为什么在运行 Minecraft(一个用 Java 编写的资源密集型程序)时,您的主系统内存会受到如此大的影响。
不过,我对您的视频 RAM 使用率很低并不感到惊讶 - 事实上,您也不应该如此。由于它仅用于存储纹理和模型,而 Minecraft 是一款基于立方体和 16x16 纹理的游戏,我想您可以理解为什么您的 VRAM 使用率如此之低。
小智 10
Java Minecraft 占用大量 CPU,但 GPU 真的没有什么可做的,图形方面它非常简单,图形资源非常小,相比之下……使命召唤。当我说小时,我的意思是非常小,100MB 听起来差不多。
由于游戏的“块”设计,您可以使用相对较少的资源来填充屏幕。这就像使用“Duplo Lego”而不是“Lego Technics”。
Java 是一种“解释型”语言,这意味着它不会被编译为本地指令。因此,当它运行时,它需要一个虚拟机来将指令(或字节码)转换为处理器可以理解的内容。你的 CPU 比 GPU 做更多的工作。
小智 8
Java VM,就像在 Minecraft 中使用的那样,似乎会使用大量 RAM,因为它会在使用之前保留大量系统 RAM 。这在操作系统看来是因为应用程序实际上使用了那么多 RAM。Java 使用自己的内存堆,该堆在某种程度上独立于运行它的操作系统。(它仍然会使用调用来增长堆)
我的世界中的纹理加载相当低。也可能发生的是 OpenGL 驱动程序分配纹理的方式。例如,在 OpenGL 3.3 中,GPU 缓冲区可以映射到内存,以便写入和随后刷新到该内存部分使其自动出现在 GPU 的 VRAM 中。棘手的部分是这个缓冲区是否真的只在 GPU 端,或者它是否实际上在 CPU 和 GPU 端并且驱动程序只是将它从一个缓冲区复制到另一个缓冲区。OpenGL 规范说驱动程序可以自行决定。结果是 CPU/Java 端为缓冲区分配了大量地址空间,我们可能有两个缓冲区副本:一个在 CPU 端,一个在 GPU 端。
也有可能 java 程序仍将图像存储在 RAM 中的自己的缓存中,然后根据需要将其加载到 GPU 或从 GPU 卸载。如果不大于 VRAM 使用量,这将要求 RAM 使用量始终至少相同。
最近的视频驱动程序和 OpenGL 的迭代支持HSA 架构,它使 VRAM 能够像缓存一样工作 - 程序甚至不会将纹理“上传”到 GPU - 它只是将内存地址传递给已加载的纹理,或者甚至从分配到虚拟内存的文件中引用纹理。这使得评估资源使用更加困难,因为现在我们可能不再简单地使用 RAM 或 VRAM,在某些情况下我们可能只使用内存地址范围,其中一些范围可以分配给 RAM,一些分配给磁盘,而 VRAM 可能看起来是无限的或零使用,因为作为缓存,它只存储最近使用的可以任意更改的页面!
| 归档时间: |
|
| 查看次数: |
8130 次 |
| 最近记录: |