gpt4 book ai didi

JavaFx MediaPlayer - 无法分配内存或 OutOfMemory

转载 作者:行者123 更新时间:2023-11-30 08:18:59 25 4
gpt4 key购买 nike

我正在创建一个 Java Fx 媒体播放器,我在管理应用程序内存方面遇到了很多问题。

问题是:当您有很多媒体(视频或音频)时,每次播放新媒体时都必须创建一个新的 MediaPlayer。

在一些循环之后你会得到一个错误:Java 7 (OutOfMemory) 或 Java 8 (mmap() failed: Cannot allocate memory).

发生这种情况是因为他们在任何地方都说您必须在创建新的 MediaPlayer 之前隐式调用最后创建的 MediaPlayer 的 dispose() 方法。

TIP Reference

最佳答案

一个简单而功能齐全的例子:
(这是我对社区的小贡献,希望这对某人有帮助)

import java.io.File;

import javafx.application.Application;
import javafx.scene.media.Media;
import javafx.scene.media.MediaPlayer;
import javafx.stage.Stage;

public class MediaPlayerSample extends Application {

private File[] files;
private int nextIdx;
private MediaPlayer activePlayer;

public static void main(String[] args) {
launch(args);
}

private void playNext() {
if (files == null || files.length == 0) {
return;
}

Media media = new Media(files[nextIdx++].toURI().toString());
if (nextIdx >= files.length) {
nextIdx = 0;
}

if (activePlayer != null) {
activePlayer.stop();
// This is the magic code
activePlayer.dispose();
}

activePlayer = new MediaPlayer(media);
activePlayer.setOnEndOfMedia(new Runnable() {
@Override
public void run() {
playNext();
}
});

activePlayer.play();
}

@Override
public void start(Stage primaryStage) throws Exception {
File fDir = new File("/mp3-files/");
files = fDir.listFiles();
playNext();
}

}

关于JavaFx MediaPlayer - 无法分配内存或 OutOfMemory,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27095639/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com