http://www.coderpanda.com/java-socket-programming-transferring-large-sized-files-through-socket/
以上链接中的代码有效,但最多可以传输一定数量的数据。当我尝试传输大小约为 334 MB 的 .mkv 格式的电影时,出现“内存不足,Java 堆大小”错误。我是初学者,我不知道如何解决这个问题,我试图增加客户端程序中的缓冲区大小,但问题仍然存在。请帮助我。
最佳答案
问题是这一行:
byte[] readBuffer = new byte[1024 * 100000];
那是分配一个大约 100 MB 的缓冲区……大得离谱。
要么减少它(10 倍或 100 倍),要么使用更大的堆运行您的应用程序。
(@Aaron Digulla 和@Holger 上面的评论也很恰当。这真的不是所谓的“高质量”代码......)
关于java - 内存不足 java 堆大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21425414/