想象一个无状态的 Web 应用程序,它处理许多请求,比如每秒处理一千个请求。我们在处理周期内创建的所有数据将在结束时立即丢弃。该应用程序将大量使用序列化/反序列化,因此我们在每个请求上创建和丢弃大约 50-200kb。 我认为这会给垃圾收集器带来很大的压力,因为 GC 必须丢弃大量短命对象。实现字节数组池以将它们重用于序列化/反序列化目的是否有意义?有人有过这样的经历吗?
最佳答案
垃圾回收机制建立的前提是创建的大量对象只存在很短的时间。第一个对象池称为 Eden Space (有关名称的起源,请参阅 this SO answer)并定期受到监控。所以我希望垃圾收集器能够处理这个问题。
像大多数(所有?)性能问题一样,我会在应用过早优化之前衡量您的特定用例。许多配置可用于调整垃圾收集,包括并行 GC 策略(请注意下面的“stop the world”评论)
关于java - 用于序列化的字节数组池,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12486103/