Java 缓存/重用json对象的最佳方法

Java 缓存/重用json对象的最佳方法,java,json,jvm,jvm-crash,Java,Json,Jvm,Jvm Crash,最近,我们的一些生产JVM出现了问题,这些JVM非常频繁地用于GC,并且需要较长的GC暂停时间。在查看堆转储之后,最近的构建中引入了一个新类,它将大量产品数据存储在json对象中,从而导致了这种情况 这个类基本上从多个源获取数据,并在此基础上构建json对象我们可以看到这些json对象在堆空间中被保存为char[],占用了将近25%的空间。问题是这个类每次调用方法时都会创建json对象。因此,对于同一个产品,它会创建多个json对象并快速填充堆空间。 我们可能需要使用某种类型的缓存,但站点中有

最近,我们的一些生产JVM出现了问题,这些JVM非常频繁地用于GC,并且需要较长的GC暂停时间。在查看堆转储之后,最近的构建中引入了一个新类,它将大量产品数据存储在json对象中,从而导致了这种情况

这个类基本上从多个源获取数据,并在此基础上构建json对象我们可以看到这些json对象在堆空间中被保存为char[],占用了将近25%的空间。问题是这个类每次调用方法时都会创建json对象。因此,对于同一个产品,它会创建多个json对象并快速填充堆空间。


我们可能需要使用某种类型的缓存,但站点中有大量的产品。有什么建议可以更好地处理这个问题吗?

-XX:+UseG1GC-XX:+useStringDuplication
非常好,但我们使用的是JDK 7。我认为这个标志在Java8Update20之后可用。当然,但是你应该将任何提议的解决方案的每一个努力与仅仅更新JRE以免费获得这个标志的努力进行比较…