发现fastjson在反序列化的时候会加载在大量的字节码信息,导致MetaSpace区溢出引发FullGc,
z18hc3ub1#
jdk 版本,方序列化的example 有吗? 使用的api。fastjson版本
nwnhqdif2#
JSON.parseObject(xxx, xxx.class);JDK:1.8fastjson:1.3.21
ftf50wuq3#
需要example,class,反序列化出来的字符串。看有没有使用动态类型等。#2081
pu82cl6c4#
是不是每次都new ParserConfig了?
0s0u357o5#
没有,直接使用的JSON.parseObject(xxx, xxx.class)这个方法,打印了下加载的类信息,好多asm生成的类
dgsult0t6#
有例子吗?class 和json string,或者直接可以复现的单元测试。这么讨论,不会有结论的
vql8enpb7#
是否已修复?
72qzrwbm8#
是不是每次都new ParserConfig类了?
4jb9z9bj9#
也发生了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 new IllegalArgumentException("not support type :" + clazz.getName()); } String className = "FastjsonASMDeserializer_" + seed.incrementAndGet() + "_" + clazz.getSimpleName(); String classNameType; String classNameFull;
vkc1a9a210#
hello,这个问题有解决吗?
10条答案
按热度按时间z18hc3ub1#
jdk 版本,方序列化的example 有吗? 使用的api。fastjson版本
nwnhqdif2#
JSON.parseObject(xxx, xxx.class);
JDK:1.8
fastjson:1.3.21
ftf50wuq3#
需要example,class,反序列化出来的字符串。看有没有使用动态类型等。
#2081
pu82cl6c4#
是不是每次都new ParserConfig了?
0s0u357o5#
没有,直接使用的JSON.parseObject(xxx, xxx.class)这个方法,打印了下加载的类信息,好多asm生成的类
dgsult0t6#
有例子吗?class 和json string,或者直接可以复现的单元测试。这么讨论,不会有结论的
vql8enpb7#
是否已修复?
72qzrwbm8#
是不是每次都new ParserConfig类了?
4jb9z9bj9#
也发生了fullgc 了, ParserConfig没有创建多个,
测试发现, 多线程下高并发下(JSONObject.toJavaObject 方法)
ASMDeserializerFactory.createJavaBeanDeserializer 中的 seed 会自增, 导致 MetaSpace 溢出
vkc1a9a210#
hello,这个问题有解决吗?