Java 用于缩短昂贵对象创建时间的缓存?

Java 用于缩短昂贵对象创建时间的缓存?,java,multithreading,caching,pool,Java,Multithreading,Caching,Pool,我必须使用一个遗留库,它在某些方面在对象创建上非常昂贵(只有“普通”对象,没有数据库连接或类似)。 在我用它编写Web服务时,将有许多线程指向该库 主要问题是垃圾收集器必须清理每个线程中的所有重对象 现在我介绍了几种缓存池方法。但我在这方面没有经验。 如果对象创建非常昂贵,您能推荐最适合的缓存池库吗 番石榴 阿帕奇公地 还是自己实现 对象创建不再是过去的样子了——它效率更高了。在大多数情况下,使用现代JVM时,最好不要担心它。不要引入创建自己的缓存代码的复杂性和维护开销,除非您确定确实需要这样

我必须使用一个遗留库,它在某些方面在对象创建上非常昂贵(只有“普通”对象,没有数据库连接或类似)。 在我用它编写Web服务时,将有许多线程指向该库

主要问题是垃圾收集器必须清理每个线程中的所有重对象

现在我介绍了几种缓存池方法。但我在这方面没有经验。 如果对象创建非常昂贵,您能推荐最适合的缓存池库吗

  • 番石榴
  • 阿帕奇公地
  • 还是自己实现

对象创建不再是过去的样子了——它效率更高了。在大多数情况下,使用现代JVM时,最好不要担心它。不要引入创建自己的缓存代码的复杂性和维护开销,除非您确定确实需要这样做,而且在通过测试获得一些性能指标之前,您无法确定。对象创建不再像过去那样高效。在大多数情况下,使用现代JVM时,最好不要担心它。不要引入创建自己的缓存代码的复杂性和维护开销,除非您确定确实需要这样做——而且在通过测试获得一些性能指标之前,您无法确定。

您使用的是什么版本的Java?这有很大的不同。“遗留”库实际上并不重要,除非它使用自己的pooling.JDK 7,通常总是使用最新版本。遗留系统没有自己的池机制。您是否实际分析了您的应用程序,并确定对象构造/GC是瓶颈?现代JVM可以很好地处理多个
new
。“垃圾收集器必须清理所有重对象”是胡说八道。垃圾收集器不依赖于实际上是垃圾的对象。它只处理仍处于活动状态的对象。所以缓存意味着让更多的对象保持活动状态,从而提高垃圾收集器的工作效率?这有很大的不同。“遗留”库实际上并不重要,除非它使用自己的pooling.JDK 7,通常总是使用最新版本。遗留系统没有自己的池机制。您是否实际分析了您的应用程序,并确定对象构造/GC是瓶颈?现代JVM可以很好地处理多个
new
。“垃圾收集器必须清理所有重对象”是胡说八道。垃圾收集器不依赖于实际上是垃圾的对象。它只处理仍处于活动状态的对象。因此,缓存意味着保持更多对象处于活动状态,从而提高垃圾收集器的工作效率。