1.为什么要释放资源:
释放内存。把已经没用途的资源占用的内存释放回收。
2.手动释放资源的问题:
流相关资源一般遵循:
1.先开后关的顺序,有点像去银行取钱一样,打开资源: 插入银行卡–>输入密码和要办的业务(取钱)–>ATM给对应的钱
释放资源: 拿走钱—>返回菜单——>取出银行卡
在jdbc中的资源释放的问题:
jdbc操作的顺序:、
1.获取注册驱动
2.获取数据库连接对象
3.定义sql
4.获取执行sql对象
5.执行sql
6.处理结果·
7.释放资源

我们在连接数据库是获取了connection对象,执行sql时的statement对象,如果是查询的话最后还会通过Statement对象获取一个结果集ResultSet对象
释放顺序为:先关ResultSet,再关Statement,最后关Connection

2.由外到内的原则(洋葱原则){查询博客}
如果资源存在包装嵌套关系,则先关闭外层,后关闭内层的。
java io流中,处理流装饰节点流,我们应该先关闭装饰流,再关闭节点流。原则上是这样,但是我们发现这样反而会出现程序异常,因为java api上已经帮我们做了这样的事情。就是在处理流的close方法中调用了节点流的close方法。因此对java io流资源,如果是处理流,我们只需要调用处理流的close方法即可

3.什么时候要释放资源:
java存在垃圾回收机制为什么还要手动释放资源呢:百度了一下
GC机制:
java内存分配和回收 都是jre后台进行, 简称GC机制,
JRE在回收时做了什么
jre 会提供一个后台线程 进行检测和控制, 使用垃圾回收算法进行(1)发现无用信息对象;(2)回收被无用对象占用的内存空间,使该空间可被程序再次使用。

其中说到gc的缺点:
不能识别与内存无关的资源,知道释放内存相关资源
其次gc回收的不确定性,