ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
虽然大部分Java程序员对主动回收资源(包括内存等)的认识普遍不如C/C++程序员,但是对于Cursor这种重型资源(不仅占用了一个文件描述符,还共享了一块2MB的内存)来说,Java程序员在编程过程中务必显示调用close函数以释放这些资源。在日常工作中,笔者已无数次碰到因为Cursor未关闭而导致Monkey测试未通过的情况了。 另外,有些同事曾问笔者,虽然没有显示调用close函数,但这个对象也没有地方再引用它了。按照Java垃圾回收机制的规矩,该对象在一定时间后会被回收。既然Cursor本身都被回收了,为什么它包含的资源(指CursorWindow)却没有被回收呢?关于这个问题,本节最后再作讨论。 * * * * * **建议**: 如果写代码时不重视资源回收,等最后出问题时再来查找泄露点的做法,会极大地增加了软件开发的成本。虽然Java提供了垃圾回收机制,但希望读者不要把资源回收的意识丢失。 * * * * * 下面来分析Cursor close函数,先从客户端说起。