我应该重用一个 GSON 实例还是按需创建新实例?

Should I reuse one instance of GSON or create new ones on demand?

在我的大多数 classes(尤其是服务器资源)中,我倾向于根据需要创建 com.google.gson.Gson 的新实例。有时我使用默认构造函数创建它们(用于处理简单的 POJO),有时我使用通过自定义 com.google.gson.GsonBuilder.

创建的更复杂的变体

我知道 Gson 是线程安全的 class,因此没有人反对重用 Gson 的相同实例而不是创建新实例。哎呀,我什至可能为此重用一个静态常量!

我的问题是:我应该在需要时创建新实例,还是应该只创建和使用一个实例?如果我使用使用 GsonBuilder 创建的 Gson 实例序列化简单的 POJO 并教授如何解析更复杂的数据结构(注册的自定义序列化器很少),我将面临什么样的性能影响?

我知道这是一个老问题,但为了将来参考,这个问题的答案是如果可能的话,你应该选择单一实例。

创建 GSON 对象的成本很高,具体取决于您向其注册的自定义 deserializer/serializer/handlers 数量。我怀疑您是否会因此看到任何重大的性能提升。

关于第二个问题,GSON 内部有一个已注册的序列化器列表,每个序列化器都会根据您要解析的对象进行检查。因此,基本上每次注册自定义序列化程序时都会添加更多迭代,但同样,与将几个笨拙的大对象存入内存相比,这不是一个大的性能问题。