다음 코드는 새 오디오 클립을 만들고 재생 한 다음 3 초 동안 대기 한 다음 재생이 끝나면 닫습니다. close()에 대한 호출에도 불구하고 while 루프가 실행될 때마다 jvm의 메모리 사용량이 사운드 클립의 크기만큼 올라간 것을보고 있습니다.close()로 닫은 후의 Java Clip (사운드/오디오) 메모리 누수
나는 자바로 코딩 된 게임에 참여 중이며 사운드를 처리 중입니다. 나는 사운드가 재생 될 때마다 내가 사용하는 메모리를 늘릴 수 없다.
무엇이 누락 되었습니까? 메모리 누수가 아니라 쓰레기가 확실 지연을 수집하는 경우
import java.io.File;
import javax.sound.sampled.*;
public class ClipLeak{
public static void main(String[] args) throws Exception{
while(true){
File soundFile = new File("./sound.wav");
AudioInputStream sound = AudioSystem.getAudioInputStream(soundFile);
DataLine.Info info = new DataLine.Info(Clip.class, sound.getFormat());
Clip clip = (Clip) AudioSystem.getLine(info);
clip.open(sound);
sound.close();
clip.addLineListener(new LineListener(){
public void update(LineEvent event){
if(event.getType() == LineEvent.Type.STOP){
event.getLine().close();
}
}
});
clip.start();
Thread.sleep(2000);
}
}
}
코드를 포맷 할 수 있습니까? – rsp
@rsp : 코드 서식 : – Asaph