错误为tomcat的日志

 错误.png

产生该错误的原因大都出于以下原因:JVM内存过小、程序不严密,产生了过多的垃圾。

导致OutOfMemoryError异常的常见原因有以下几种: 内存中加载的数据量过于庞大,如一次从数据库取出过多数据;

集合类中有对对象的引用,使用完后未清空,使得JVM不能回收;代码中存在死循环或循环产生过多重复的对象实体;使用的第三方软件中的BUG;启动参数内存值设定的过小;

撒是啊.png 

我出现报这个错的原因是  用 servlet 下载一个app的安装包(30M左右)出现的错误 。

toClient.flush();  这个是出现问题后加上的。 查看资料发现是如上的原因。 先调了tomcat的内存

flush()作用一般主要用在IO中,即清空缓冲区数据,就是说你用读写流的时候,其实数据是先被读到了内存中,然后用数据写到文件中,

当你数据读完的时候不代表你的数据已经写完了,因为还有一部分有可能会留在内存这个缓冲区中。

这时候如果你调用了 close()方法关闭了读写流,那么这部分数据就会丢失,所以应该在关闭读写流之前先flush(),先清空数据。

我觉得不刷新这个是因为下载一直处于阻塞状态

所以导致了下载一直在加载中。 但是具体的什么原因 还是一知半解 但问题确实已经解决了。 有没有大大佬 详细给解释一下