Java по умолчанию использует сборщик мусора типа mark-sweep, а не счетчик сбора мусора. Это означает, что когда вы отбрасываете все ссылки на старое видео, видео не выгружается из памяти, вместо этого Java runtime ждет, пока программа не будет использовать определенный объем памяти, прежде чем вызывать сборщик мусора. Эти параметры задаются в командной строке Java или дефолтны для каждой платформы. Похоже, что ваши параметры коллекции мусора Java слишком высоки, и в результате Java не собирает мусор, прежде чем потребляет всю память на вашем компьютере.
Чтобы установить максимальное количество памяти, добавьте следующие строки в вашей JAVA_OPTS переменной окружения перед запуском программы:
-verbose:gc -Xmx1200m
Первый расскажет вам, что происходит с сборщика мусора, второй устанавливает максимальный объем памяти, который будет использовать Java, в этом случае 1,2 гигабайта. Установите некоторую часть общей памяти вашей машины, но достаточно большую, чтобы вы могли загружать свои видео в память.
Вы можете также добавить
-XX:+UseG1GC
для того, чтобы сохранить задержки сбора мусора на низком уровне. Это приносит в жертву некоторое количество конечной производительности, чтобы время от времени предотвращать 10-секундные задержки сбора мусора. Сегодняшние машины настолько быстры, что их воспоминания настолько велики, что для интерактивных программ вы заметите задержки в сборе мусора намного больше, чем вы заметите замедление, вызванное G1GC.
Вы также должны удостовериться, что вы удалите все ссылки на старое видео сразу после загрузки нового видео. В противном случае, если у него есть доступная ссылка, он не будет выгружен сборщиком мусора.
Мы не можем помочь вам найти ошибку, если вы не указали нам код. –