我正在从数据库中读取此类List<Rows<Long,String,ByteBuffer>>
由于每行都很大,包括大字符串/ blob /文本内容等,我正在尝试优化垃圾收集。我希望这不称为过早优化!?
答案 0 :(得分:3)
如果你没有测量你的程序的性能,那么这是一个过早的优化。
(并非在测量之前执行的每个优化都是过早的,但这些微优化都是。)
答案 1 :(得分:3)
我建议取消引用它们。这不是过早优化,因为与时间不同,程序可用于完成它的内存量不在您的控制之下。
答案 2 :(得分:2)
正如larsmans所说,这是过早优化的定义。然而,像这样的问题经常弹出而不是忘记它们我想立即添加分析点(由开/关开关包裹 - 如Logger.isEnabled())然后继续。查看http://netbeans.org/features/java/profiler.html以获得简单的分析工具/设置
答案 3 :(得分:1)
正如larsmans所说,存在复杂性的缺点。
但是也可能存在性能劣势 - 使引用无效涉及写入内存,而在现代垃圾收集环境中,写入内存不一定只是存储。为收集者的利益可能还有一些簿记 - 在垃圾收集的背景下查找“写屏障”和“卡片标记”。写入也会对处理器缓存产生影响;在多处理器系统上,它将导致处理器之间的高速缓存一致性流量,从而消耗带宽。
现在,我认为这些影响都不大。但是你应该意识到写入内存并不总是像你想象的那么便宜。这就是为什么你必须在优化之前进行分析,然后再进行分析!