java - 用于序列化的字节数组池

标签 java serialization memory-management garbage-collection object-pooling

想象一个无状态的 Web 应用程序,它处理许多请求,比如每秒处理一千个请求。我们在处理周期内创建的所有数据将在结束时立即丢弃。该应用程序将大量使用序列化/反序列化,因此我们在每个请求上创建和丢弃大约 50-200kb。 我认为这会给垃圾收集器带来很大的压力,因为 GC 必须丢弃大量短命对象。实现字节数组池以将它们重用于序列化/反序列化目的是否有意义?有人有过这样的经历吗?

最佳答案

垃圾回收机制建立的前提是创建的大量对象只存在很短的时间。第一个对象池称为 Eden Space (有关名称的起源,请参阅 this SO answer)并定期受到监控。所以我希望垃圾收集器能够处理这个问题。

像大多数(所有?)性能问题一样,我会在应用过早优化之前衡量您的特定用例。许多配置可用于调整垃圾收集,包括并行 GC 策略(请注意下面的“stop the world”评论)

关于java - 用于序列化的字节数组池,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12486103/

相关文章:

C++ 按值传递结构或对象

python - 使用 Requests HTTP 库了解 python 中的内存消耗增加

memory-leaks - 如何解码 node.js 中内存数据的含义并调试内存泄漏?

java - visualvm中jstats和jmx的区别

java.io.StreamCorruptedException : invalid stream header: AC3F0005

c# - [Serializable] 属性有哪些 ISerializable 没有的功能?

python - Yaml 通过 Camel 序列化 : using base class load/dump and accessing type(self) in decorator

C++ 的 Java 等价物 +'s "std::string::find_first_of"

java - 当回收者 View 中添加任何新项目时如何自动发布数据

java - JSplitPane 未显示