matthewZZC

Results 10 comments of matthewZZC

一个对象,产生了许多ObjectSerializer类。但是只有一个被SerializeConfig引用。

Caused by: java.lang.OutOfMemoryError: Metaspace at java.lang.ClassLoader.defineClass1(Native Method) ~[?:1.8.0_91] at java.lang.ClassLoader.defineClass(ClassLoader.java:763) ~[?:1.8.0_91] at com.alibaba.fastjson.util.ASMClassLoader.defineClassPublic(ASMClassLoader.java:174) ~[fastjson-1.2.83-jdsec.rc1.jar:?] at com.alibaba.fastjson.serializer.ASMSerializerFactory.createJavaBeanSerializer(ASMSerializerFactory.java:409) ~[fastjson-1.2.83-jdsec.rc1.jar:?] at com.alibaba.fastjson.serializer.SerializeConfig.createASMSerializer(SerializeConfig.java:90) ~[fastjson-1.2.83-jdsec.rc1.jar:?] at com.alibaba.fastjson.serializer.SerializeConfig.createJavaBeanSerializer(SerializeConfig.java:252) ~[fastjson-1.2.83-jdsec.rc1.jar:?] at com.alibaba.fastjson.serializer.SerializeConfig.createJavaBeanSerializer(SerializeConfig.java:118) ~[fastjson-1.2.83-jdsec.rc1.jar:?] at com.alibaba.fastjson.serializer.SerializeConfig.getObjectWriter(SerializeConfig.java:821) ~[fastjson-1.2.83-jdsec.rc1.jar:?] @wuwen5...

@nirvanareborn 问题的关键 为什么相同的类。会走到这里两遍。

@wenshao dump信息:随便找了一个JSON输出类。很多类都没有引用。只是创建了。如果按照您说SerializeConfig有多个。那么dump信息里面的 类信息肯定都有引用。 而且我也多次检查了代码,没有SerializeConfig。并且在dump文件中 也只有1个SerializeConfig类,和一个SerializeConfig对象(见下图)。。。很奇怪了。。比较紧急。版本:1.2.83 ![Uploading image.png…]() 堆栈信息 01-30 10:11:15.331 [storeCallable-7-98] ERROR com.xx.mti.shop.core.service.promotion.impl.PromotionServiceImpl - 2162325.39397.17065806682778673 - [获取门店弹层减运限购异常] venderId=10355037 storeId=1000335488 java.lang.RuntimeException: java.lang.OutOfMemoryError: Metaspace at com.xx.mti.shop.core.service.promotion.impl.PromotionServiceImpl.tolayerReduceFreightDtoList(PromotionServiceImpl.java:666) ~[shop-domain-core-2.0.0-SNAPSHOT.jar:2.0.0-SNAPSHOT] at com.xx.mti.shop.core.service.promotion.impl.PromotionServiceImpl.getlayerReduceFreightList(PromotionServiceImpl.java:556) ~[shop-domain-core-2.0.0-SNAPSHOT.jar:2.0.0-SNAPSHOT] at com.xx.mti.shop.core.service.promotion.impcreateJavaBeanSerializerl.PromotionServiceImpl.lambda$getAll$5(PromotionServiceImpl.java:1060)...

@wuwen5 图片上传不上去。已发您邮件。十分感谢

> 是不是每次都new ParserConfig或者SerializeConfig了? 解决了么。。我没这样用啊

也发生了fullgc 了, ParserConfig没有创建多个, 测试发现, 多线程下高并发下(JSONObject.toJavaObject 方法) ASMDeserializerFactory.createJavaBeanDeserializer 中的 seed 会自增, 导致 MetaSpace 溢出 public ObjectDeserializer createJavaBeanDeserializer(ParserConfig config, JavaBeanInfo beanInfo) throws Exception { Class clazz = beanInfo.clazz; if (clazz.isPrimitive()) { throw...