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

2022-09-02 14:09:26

在我的大多数类(尤其是服务器资源)中,我倾向于创建按需的新实例。有时我使用默认构造函数创建它们(用于处理简单的POJO),有时我使用使用自定义创建的更复杂的变体。com.google.gson.Gsoncom.google.gson.GsonBuilder

我知道这是一个线程安全类,所以没有什么可以反对重用相同的实例而不是创建新的实例。哎呀,我甚至可以为此重用一个静态常量!GsonGson

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


答案 1

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

创建 GSON 对象的成本很高,具体取决于您注册到该对象的自定义反序列化程序/序列化程序/处理程序的数量。我怀疑你会从中看到任何巨大的性能提升。

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


答案 2