错误为tomcat的日志
产生该错误的原因大都出于以下原因:JVM内存过小、程序不严密,产生了过多的垃圾。
导致OutOfMemoryError异常的常见原因有以下几种: 内存中加载的数据量过于庞大,如一次从数据库取出过多数据;
集合类中有对对象的引用,使用完后未清空,使得JVM不能回收;代码中存在死循环或循环产生过多重复的对象实体;使用的第三方软件中的BUG;启动参数内存值设定的过小;
我出现报这个错的原因是 用 servlet 下载一个app的安装包(30M左右)出现的错误 。
toClient.flush(); 这个是出现问题后加上的。 查看资料发现是如上的原因。 先调了tomcat的内存
flush()作用一般主要用在IO中,即清空缓冲区数据,就是说你用读写流的时候,其实数据是先被读到了内存中,然后用数据写到文件中,
当你数据读完的时候不代表你的数据已经写完了,因为还有一部分有可能会留在内存这个缓冲区中。
这时候如果你调用了 close()方法关闭了读写流,那么这部分数据就会丢失,所以应该在关闭读写流之前先flush(),先清空数据。
我觉得不刷新这个是因为下载一直处于阻塞状态
所以导致了下载一直在加载中。 但是具体的什么原因 还是一知半解 但问题确实已经解决了。 有没有大大佬 详细给解释一下
然后 toClient.write(data) ,这个方法只是将data写入到 字节缓冲区中。
然后调用 flush方法将 字节缓冲区中的数据 给冲刷到磁盘。
所以,如果没有进行flush操作就直接close,那么数据都还在字节缓冲区中呢。
根据我的经验应该是这样的。很久没做web开发了。