7.4 小结
内存管理对 Java 程序的快慢至关重要。调优 GC 非常重要,但是要获得最好的性能,在应用内必须有效地利用内存。
目前的硬件趋势往往不鼓励开发者考虑内存:如果我的笔记本有 16 GB 内存,我为什么要关心某个对象中有一个多余的、未使用的 8 字节大的对象引用呢?我们还忘记了一点,编程中通常的时间和空间之间的取舍,有可能会变成时间和空间与时间(time/space-and-time)之间的取舍:使用太多堆空间可能会降低性能,因为需要更多 GC。在 Java 中,管理堆仍然非常重要。
多数管理问题都围绕何时以及如何使用特殊的内存技术展开:对象池、线程局部变量和非确定引用。明智地使用这些技术可以极大改进应用性能,但是过度使用也很容易引起性能下降。在限量的情况下,也就是问题中的对象数目很少,而且有个边界时,使用这些内存技术会非常高效。
