MediaPlayer 切换歌曲时 Ram 使用率增加(Monogame c#)
Ram usage increases when MediaPlayer switches songs (Monogame c#)
我正在使用 Monogame 引擎制作游戏,并使用 MediaPlayer 播放背景音乐。当我切换正在播放的任何歌曲时,我可以看到 ram 使用量增加了几 MB(使用 'Performance and Diagnostic Tool'),即使它是一首已预加载的歌曲。经过大量歌曲更改后,这可能会成为一个问题。我想让游戏使用尽可能少的计算机资源。
Song song1;
Song song2;
protected override void LoadContent()
{
song1 = Content.Load<Song>("song1");
song2 = Content.Load<Song>("song2");
}
void updateMusic()
{
if (gameState == "lvl1") { MediaPlayer.Play(song1); }
else if (gameState == "lvl2") { MediaPlayer.Play(song2);}
}
我敢肯定,如果您不想增加 RAM 使用率,则必须在更换新歌曲后卸载当前歌曲。即使这不是问题,如果您不打算再次或在不久的将来的任何时间使用该歌曲,您也应该这样做。你有没有测试过如果你加载一堆歌曲并在它们之间切换会发生什么?仅仅因为您在这两首歌曲之间切换时看到使用量激增,并不一定意味着随着您在更多歌曲之间切换,使用量会继续增加。
事实证明,我使用的当前版本的 MonoGame (3.5) 存在漏洞并且存在某种内存管理问题。切换到MonoGame 3.4版本后,现在可以正常加载和卸载了。
我正在使用 Monogame 引擎制作游戏,并使用 MediaPlayer 播放背景音乐。当我切换正在播放的任何歌曲时,我可以看到 ram 使用量增加了几 MB(使用 'Performance and Diagnostic Tool'),即使它是一首已预加载的歌曲。经过大量歌曲更改后,这可能会成为一个问题。我想让游戏使用尽可能少的计算机资源。
Song song1;
Song song2;
protected override void LoadContent()
{
song1 = Content.Load<Song>("song1");
song2 = Content.Load<Song>("song2");
}
void updateMusic()
{
if (gameState == "lvl1") { MediaPlayer.Play(song1); }
else if (gameState == "lvl2") { MediaPlayer.Play(song2);}
}
我敢肯定,如果您不想增加 RAM 使用率,则必须在更换新歌曲后卸载当前歌曲。即使这不是问题,如果您不打算再次或在不久的将来的任何时间使用该歌曲,您也应该这样做。你有没有测试过如果你加载一堆歌曲并在它们之间切换会发生什么?仅仅因为您在这两首歌曲之间切换时看到使用量激增,并不一定意味着随着您在更多歌曲之间切换,使用量会继续增加。
事实证明,我使用的当前版本的 MonoGame (3.5) 存在漏洞并且存在某种内存管理问题。切换到MonoGame 3.4版本后,现在可以正常加载和卸载了。