yausername / youtubedl-android

youtube-dl for android
GNU General Public License v3.0
934 stars 172 forks source link

Processing logs causes OutOfMemoryError when downloading long streams #250

Open JunkFood02 opened 9 months ago

JunkFood02 commented 9 months ago
java.lang.OutOfMemoryError: Failed to allocate a 75497480 byte allocation with 73634792 free bytes and 70MB until OOM, target footprint 268435456, growth limit 268435456
 at java.util.Arrays.copyOf(Arrays.java:3766)
 at java.lang.AbstractStringBuilder.ensureCapacityInternal(AbstractStringBuilder.java:125)
 at java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:650)
 at java.lang.StringBuilder.append(StringBuilder.java:203)
 at com.yausername.youtubedl_android.StreamProcessExtractor.run(SourceFile:41)

Originally reported by a Seal user, who was trying to download a 3hrs live stream, a large number of logs got accumulated in a single string builder object, caused this error

Walkaround: pass -q to yt-dlp to make sure it doesn't print log when downloading

A possible solution is to split strings to multiple chunks, but it might be complicated to refactor the current code base