引言
经常有人告诉你流用完要记得关,不然会导致内存泄漏,但你是否考虑过下面这些问题:
- 为什么流不关会导致内存泄漏?
- JVM不是有垃圾回收机制吗?这些引用我用完不就变垃圾了为什么不会被回收呢?
- 流未关闭除了导致内存泄漏?是否还会引发别的问题?
这对这些问题,本文就再次对IO流底层工作工作原理展开探讨。
问题复现
代码演示
我们首先来一段示例代码,每次请求时就会创建1w个文件输入流,创建完成后并没有关闭,后续我们会通过压测工具请求这个接口。
@RequestMapping("noClose")
public String noClose