JDBC连接是否包含对其PreparedStatement的硬引用?
我想缓存我构建的准备好的语句。当它们建立在CG'd连接上时,我想忘记准备好的语句 我想做一个连接->语句的WeakHashMap,但这不起作用。语句包含对其连接对象的硬引用,因此连接永远不会被GC 因此,我可以保存一个连接对象的WeakHashMap,它指向为每个连接准备的语句的弱引用。但是,如果连接对象不包含对语句的硬引用,那么这些语句将得到GC'd。另一方面,如果是这样,那么一切都是甜蜜的JDBC连接是否包含对其PreparedStatement的硬引用?,jdbc,oracle11g,garbage-collection,Jdbc,Oracle11g,Garbage Collection,我想缓存我构建的准备好的语句。当它们建立在CG'd连接上时,我想忘记准备好的语句 我想做一个连接->语句的WeakHashMap,但这不起作用。语句包含对其连接对象的硬引用,因此连接永远不会被GC 因此,我可以保存一个连接对象的WeakHashMap,它指向为每个连接准备的语句的弱引用。但是,如果连接对象不包含对语句的硬引用,那么这些语句将得到GC'd。另一方面,如果是这样,那么一切都是甜蜜的 我们知道它是不是真的吗?好的。首先,行为没有定义。第二,答案是否定的——除非您硬引用,否则准备好的语句
我们知道它是不是真的吗?好的。首先,行为没有定义。第二,答案是否定的——除非您硬引用,否则准备好的语句是GC'd 我认为我试图做的事情实际上可能是不可能的,因为java引用和我的代码没有创建连接和准备好的语句对象
哦,好吧。我会在需要时将新的PreparedStatements装入板条箱,并在使用后发布。Oracle将为您缓存连接和语句。尝试开发自己的缓存不太可能有任何实际价值