【发布时间】:2010-10-15 09:30:29
【问题描述】:
维护一个经常使用的对象池并从池中获取一个而不是创建一个新对象的优点和缺点是什么。类似于字符串实习的东西,除了它对所有类对象都是可能的。
例如,它可以被认为是好的,因为它节省了 gc 时间和对象创建时间。另一方面,如果从多个线程中使用它可能会成为同步瓶颈,需要显式释放并引入内存泄漏的可能性。通过占用可以回收的内存,它会给垃圾收集器带来额外的压力。
【问题讨论】:
-
cmets 似乎是负面的,但我正在考虑类似的事情。我有一个 j2me 应用程序,可以创建数千个小的潜在边界框对象。如果我可以创建一个池,那么以后我会给 GC 一个更轻松的工作。我想知道在受限的手机世界中这是否仍然是一个坏主意。
-
仅池化昂贵的对象(如数据库连接等)。 “昂贵”的定义很大程度上取决于您的要求。
标签: java memory-management garbage-collection