我有一个java应用程序,它可以加载1GB的音乐文件,但由于可用的RAM不多,因此会出现OutofMemory错误。它适用于尺寸小于600 mb的较小文件(当我将最小和最大可用内存设置为512mb和1536mb时也是如此)。我使用的是2GB RAM机器
我需要知道是否可以使用我的硬盘代替RAM(由于存储限制)。如果是,请您参考这些文章以供参考。
我正在使用此代码来播放音乐:
DataLine.Info info = new DataLine.Info(Clip.class, format, size);
audioStream.read(audio, 0, size);
audioClip = (Clip) AudioSystem.getLine(info);
audioClip.addLineListener(this);
audioClip.open(format, audio, 0, size);
如果我遗漏了某些内容,请发表评论。
答案 0 :(得分:2)
最好只播放音乐
http://www.codejava.net/coding/how-to-play-back-audio-in-java-with-examples
从给定的声音文件创建AudioInputStream: 文件audioFile = new File(audioFilePath);
AudioInputStream audioStream = AudioSystem.getAudioInputStream(audioFile);
获取音频格式并创建DataLine.Infoobject:
AudioFormat format = audioStream.getFormat();
DataLine.Info info = new DataLine.Info(Clip.class, format);
获取剪辑:
Clip audioClip = (Clip) AudioSystem.getLine(info);
打开AudioInputStream并开始播放:
audioClip.open(audioStream);
audioClip.start();
关闭并释放获得的资源:
audioClip.close();
audioStream.close();
答案 1 :(得分:0)
你可以这样做,它被称为虚拟内存或页面文件。
因为你在Windows上,你会想去:
控制面板 - 系统和安全 - 系统 - 高级系统设置 - 性能 - 高级选项卡
然后您应该看到一个用于更改可用虚拟内存量的选项。
这有一个主要的缺点,因为RAM是专门设计的内存并且它非常快,所以你不会从你的硬盘内存中获得相同的性能。在资源意义上,更好的选择是流式传输音频,然后以这种方式对其进行操作,如果这是一个选项。