【问题标题】:Keeping audio clips in memory将音频剪辑保存在内存中
【发布时间】:2015-02-03 09:42:19
【问题描述】:

我正在制作一个游戏,我注意到将所有音频文件保存在内存中通常并不是真正的内存效率,因为更长(因此更大)的音频文件会占用大量内存。我想知道游戏应该决定以哪种大小流式传输音频文件,而不是将其存储在内存中?

【问题讨论】:

  • 我不明白你的意思。
  • 什么时候音频文件太大而无法一直保存在内存中,因此必须在需要时进行流式传输
  • 从文件中播放一个长文件的情况并不少见(有时甚至在同时解压缩时)。我在具有背景音乐(来自文件)和音效的独立 Java 游戏中看到了很多。很大程度上取决于您有多少可用 RAM 以及您的程序在 RAM 方面需要哪些其他方面。

标签: java swing audio memory javasound


【解决方案1】:

作为一种好的做法,您应该将所有音频(和纹理)文件保存在 RAM 中。从内存读取音频文件比从硬盘读取音频文件快得多。如果您的游戏设计为加载音频文件并在需要音频时播放,然后在您的游戏完成播放音频时将其销毁,这将使您的游戏滞后。

最好的方法是在不需要时不要加载音频文件。
例如,您的游戏有 5 个阶段。在第一阶段,music_1.mp3 不是必需的,因此您不应加载它。第一阶段完成后,从内存中删除音频文件(仅第一阶段的音频,不会在其他阶段使用)。

【讨论】:

    【解决方案2】:

    您不必担心这一点。相反,请尝试软引用您的资源。

    http://docs.oracle.com/javase/7/docs/api/java/lang/ref/SoftReference.html

    【讨论】:

      【解决方案3】:

      ..游戏应该决定以哪种大小流式传输音频文件,而不是将其存储在内存中?

      我会在OutOfMemoryError 做。在此之前的任何事情都是过早的优化。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-03-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多