只是试图从 GC 的角度理解一些东西
public Set<Something> returnFromDb(String id) {
LookupService service = fromSomewhere();
Map<String,Object> where = new WeakHashMap<>() {}
where.put("id",id);
return service.doLookupByKVPair(where); // where doesn't need to be serializable
}
我的理解是,一旦这个方法调用离开堆栈,where
无论使用HashMap
或都没有引用WeakHashMap
- 但由于弱引用是弱可访问的,这不会更快 GCd 吗?但是如果方法调用离开堆栈,那么无论如何都没有可访问的引用。
我想我真正的问题是-“WeakHashMap<>
在这里使用实际上很重要”-我认为这是“不,因为影响微不足道”-但是第二个答案不会损害我的知识。