This repository was archived by the owner on Oct 23, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 6.5k
fastjson在jdk1.8上面开启asm效率不如关闭高,默认该关闭了吧? #385
Comments
跑一次预热不算啊 |
我的理解是跑第一次,asm创建字节码花费时间多.第一次创建会放入IdentityHashMap缓存,第二次直接使用. 但是我的测试使用一个带有200字段的类运行几次,在JDK8中开启asm花费大概是关闭的两倍,估计是JDK对反射做了优化,暂时没去读源码. 下面是测试代码: SerializeConfig config = new SerializeConfig();
config.setAsmEnable(true);
long start = System.currentTimeMillis();
JSON.toJSONString(new _200FieldsBean(), config);
JSON.toJSONString(new _200FieldsBean(), config);
JSON.toJSONString(new _200FieldsBean(), config);
JSON.toJSONString(new _200FieldsBean(), config);
JSON.toJSONString(new _200FieldsBean(), config);
JSON.toJSONString(new _200FieldsBean(), config);
System.out.println("open asm cost timeMillis: " + (System.currentTimeMillis() - start) + "ms");
//open asm cost timeMillis: 218ms
SerializeConfig config = new SerializeConfig();
config.setAsmEnable(false);
long start = System.currentTimeMillis();
JSON.toJSONString(new _200FieldsBean(), config);
JSON.toJSONString(new _200FieldsBean(), config);
JSON.toJSONString(new _200FieldsBean(), config);
JSON.toJSONString(new _200FieldsBean(), config);
JSON.toJSONString(new _200FieldsBean(), config);
JSON.toJSONString(new _200FieldsBean(), config);
System.out.println("close asm cost timeMillis: " + (System.currentTimeMillis() - start) + "ms");
//close asm cost timeMillis: 112ms; bean里面是200个int字段 |
环境信息: java version:1.8.0_40
jetty version:9.2.9.v20150224
fastjson version:1.2.3 现在老是出现 [Loaded Serializer_3725 from file:/tmp/jetty-0.0.0.0-8080-bybev16.war-_bybev16-any-7392887708992491162.dir/webapp/WEB-INF/lib/fastjson-1.2.3.jar]
[Loaded Serializer_3726 from file:/tmp/jetty-0.0.0.0-8080-bybev16.war-_bybev16-any-7392887708992491162.dir/webapp/WEB-INF/lib/fastjson-1.2.3.jar]
[Loaded Serializer_3727 from file:/tmp/jetty-0.0.0.0-8080-bybev16.war-_bybev16-any-7392887708992491162.dir/webapp/WEB-INF/lib/fastjson-1.2.3.jar]
[Loaded Serializer_3728 from file:/tmp/jetty-0.0.0.0-8080-bybev16.war-_bybev16-any-7392887708992491162.dir/webapp/WEB-INF/lib/fastjson-1.2.3.jar]
[Loaded Serializer_3729 from file:/tmp/jetty-0.0.0.0-8080-bybev16.war-_bybev16-any-7392887708992491162.dir/webapp/WEB-INF/lib/fastjson-1.2.3.jar]
[Loaded Serializer_3730 from file:/tmp/jetty-0.0.0.0-8080-bybev16.war-_bybev16-any-7392887708992491162.dir/webapp/WEB-INF/lib/fastjson-1.2.3.jar]
[Loaded Serializer_3731 from file:/tmp/jetty-0.0.0.0-8080-bybev16.war-_bybev16-any-7392887708992491162.dir/webapp/WEB-INF/lib/fastjson-1.2.3.jar]
[Loaded Serializer_3732 from file:/tmp/jetty-0.0.0.0-8080-bybev16.war-_bybev16-any-7392887708992491162.dir/webapp/WEB-INF/lib/fastjson-1.2.3.jar]
[Loaded Serializer_3733 from file:/tmp/jetty-0.0.0.0-8080-bybev16.war-_bybev16-any-7392887708992491162.dir/webapp/WEB-INF/lib/fastjson-1.2.3.jar]
[Loaded Serializer_3734 from file:/tmp/jetty-0.0.0.0-8080-bybev16.war-_bybev16-any-7392887708992491162.dir/webapp/WEB-INF/lib/fastjson-1.2.3.jar]
[Loaded Serializer_3735 from file:/tmp/jetty-0.0.0.0-8080-bybev16.war-_bybev16-any-7392887708992491162.dir/webapp/WEB-INF/lib/fastjson-1.2.3.jar]
[Loaded Serializer_3736 from file:/tmp/jetty-0.0.0.0-8080-bybev16.war-_bybev16-any-7392887708992491162.dir/webapp/WEB-INF/lib/fastjson-1.2.3.jar]
[Loaded Serializer_3737 from file:/tmp/jetty-0.0.0.0-8080-bybev16.war-_bybev16-any-7392887708992491162.dir/webapp/WEB-INF/lib/fastjson-1.2.3.jar]
[Loaded Serializer_3738 from file:/tmp/jetty-0.0.0.0-8080-bybev16.war-_bybev16-any-7392887708992491162.dir/webapp/WEB-INF/lib/fastjson-1.2.3.jar]
[Loaded Serializer_3739 from file:/tmp/jetty-0.0.0.0-8080-bybev16.war-_bybev16-any-7392887708992491162.dir/webapp/WEB-INF/lib/fastjson-1.2.3.jar]
[Loaded Serializer_3740 from file:/tmp/jetty-0.0.0.0-8080-bybev16.war-_bybev16-any-7392887708992491162.dir/webapp/WEB-INF/lib/fastjson-1.2.3.jar]
[Loaded Serializer_3741 from file:/tmp/jetty-0.0.0.0-8080-bybev16.war-_bybev16-any-7392887708992491162.dir/webapp/WEB-INF/lib/fastjson-1.2.3.jar]
[Loaded Serializer_3742 from file:/tmp/jetty-0.0.0.0-8080-bybev16.war-_bybev16-any-7392887708992491162.dir/webapp/WEB-INF/lib/fastjson-1.2.3.jar]
[Unloading class sun.reflect.GeneratedConstructorAccessor128 0x00000007c099a028]
[Loaded Serializer_3743 from file:/tmp/jetty-0.0.0.0-8080-bybev16.war-_bybev16-any-7392887708992491162.dir/webapp/WEB-INF/lib/fastjson-1.2.3.jar]
[Loaded Serializer_3744 from file:/tmp/jetty-0.0.0.0-8080-bybev16.war-_bybev16-any-7392887708992491162.dir/webapp/WEB-INF/lib/fastjson-1.2.3.jar]
[Loaded Serializer_3745 from file:/tmp/jetty-0.0.0.0-8080-bybev16.war-_bybev16-any-7392887708992491162.dir/webapp/WEB-INF/lib/fastjson-1.2.3.jar]
[Loaded Serializer_3746 from file:/tmp/jetty-0.0.0.0-8080-bybev16.war-_bybev16-any-7392887708992491162.dir/webapp/WEB-INF/lib/fastjson-1.2.3.jar]
[Loaded Serializer_3747 from file:/tmp/jetty-0.0.0.0-8080-bybev16.war-_bybev16-any-7392887708992491162.dir/webapp/WEB-INF/lib/fastjson-1.2.3.jar]
[Loaded Serializer_3748 from file:/tmp/jetty-0.0.0.0-8080-bybev16.war-_bybev16-any-7392887708992491162.dir/webapp/WEB-INF/lib/fastjson-1.2.3.jar]
[Loaded Serializer_3749 from file:/tmp/jetty-0.0.0.0-8080-bybev16.war-_bybev16-any-7392887708992491162.dir/webapp/WEB-INF/lib/fastjson-1.2.3.jar]
[Loaded Serializer_3750 from file:/tmp/jetty-0.0.0.0-8080-bybev16.war-_bybev16-any-7392887708992491162.dir/webapp/WEB-INF/lib/fastjson-1.2.3.jar]
[Loaded Serializer_3751 from file:/tmp/jetty-0.0.0.0-8080-bybev16.war-_bybev16-any-7392887708992491162.dir/webapp/WEB-INF/lib/fastjson-1.2.3.jar]
[Loaded Serializer_3752 from file:/tmp/jetty-0.0.0.0-8080-bybev16.war-_bybev16-any-7392887708992491162.dir/webapp/WEB-INF/lib/fastjson-1.2.3.jar]
[Loaded Serializer_3753 from file:/tmp/jetty-0.0.0.0-8080-bybev16.war-_bybev16-any-7392887708992491162.dir/webapp/WEB-INF/lib/fastjson-1.2.3.jar]
[Loaded Serializer_3754 from file:/tmp/jetty-0.0.0.0-8080-bybev16.war-_bybev16-any-7392887708992491162.dir/webapp/WEB-INF/lib/fastjson-1.2.3.jar]
[Loaded Serializer_3755 from file:/tmp/jetty-0.0.0.0-8080-bybev16.war-_bybev16-any-7392887708992491162.dir/webapp/WEB-INF/lib/fastjson-1.2.3.jar]
[Loaded Serializer_3756 from file:/tmp/jetty-0.0.0.0-8080-bybev16.war-_bybev16-any-7392887708992491162.dir/webapp/WEB-INF/lib/fastjson-1.2.3.jar]
[Loaded Serializer_3757 from file:/tmp/jetty-0.0.0.0-8080-bybev16.war-_bybev16-any-7392887708992491162.dir/webapp/WEB-INF/lib/fastjson-1.2.3.jar]
[Loaded Serializer_3758 from file:/tmp/jetty-0.0.0.0-8080-bybev16.war-_bybev16-any-7392887708992491162.dir/webapp/WEB-INF/lib/fastjson-1.2.3.jar]
[Loaded Serializer_3759 from file:/tmp/jetty-0.0.0.0-8080-bybev16.war-_bybev16-any-7392887708992491162.dir/webapp/WEB-INF/lib/fastjson-1.2.3.jar]
[Loaded Serializer_3760 from file:/tmp/jetty-0.0.0.0-8080-bybev16.war-_bybev16-any-7392887708992491162.dir/webapp/WEB-INF/lib/fastjson-1.2.3.jar]
[Loaded Serializer_3761 from file:/tmp/jetty-0.0.0.0-8080-bybev16.war-_bybev16-any-7392887708992491162.dir/webapp/WEB-INF/lib/fastjson-1.2.3.jar]
[Loaded Serializer_3762 from file:/tmp/jetty-0.0.0.0-8080-bybev16.war-_bybev16-any-7392887708992491162.dir/webapp/WEB-INF/lib/fastjson-1.2.3.jar]
[Loaded Serializer_3763 from file:/tmp/jetty-0.0.0.0-8080-bybev16.war-_bybev16-any-7392887708992491162.dir/webapp/WEB-INF/lib/fastjson-1.2.3.jar]
[Loaded Serializer_3764 from file:/tmp/jetty-0.0.0.0-8080-bybev16.war-_bybev16-any-7392887708992491162.dir/webapp/WEB-INF/lib/fastjson-1.2.3.jar]
[Loaded Serializer_3765 from file:/tmp/jetty-0.0.0.0-8080-bybev16.war-_bybev16-any-7392887708992491162.dir/webapp/WEB-INF/lib/fastjson-1.2.3.jar]
[Loaded Serializer_3766 from file:/tmp/jetty-0.0.0.0-8080-bybev16.war-_bybev16-any-7392887708992491162.dir/webapp/WEB-INF/lib/fastjson-1.2.3.jar]
[Loaded Serializer_3767 from file:/tmp/jetty-0.0.0.0-8080-bybev16.war-_bybev16-any-7392887708992491162.dir/webapp/WEB-INF/lib/fastjson-1.2.3.jar]
[Loaded Serializer_3768 from file:/tmp/jetty-0.0.0.0-8080-bybev16.war-_bybev16-any-7392887708992491162.dir/webapp/WEB-INF/lib/fastjson-1.2.3.jar] |
metaspace oom? 估计是fastjson创建字节码占用了太多metaspace, 你把空间设置大一些就不会OOM了 |
但是metaspace是一直增长的,之前设置到512M OOM 现在设置到1G ,class load count也是一直增长unload 没有变化 |
[Loaded Serializer_3768 from file:/tmp/jetty-0.0.0.0-8080-bybev16.war-_bybev16-any-7392887708992491162.dir/webapp/WEB-INF/lib/fastjson-1.2.3.jar] 你这个估计是在不停的创建字节码,fastjson缓存的字节码没有使用到,你把JDK版本编程7或者6试试吧,然后再去看下jdk8 metaspace的模型这些, 我对jdk8 metaspace也不了解 |
OK 我试试jdk7 但是这台机器上另外一个springboot应用也使用的fastjson同样版本没问题,出问题的是使用jetty启的war |
需要将SerializeConfig缓存起来,或者使用SerializeConfig.globalInstance |
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
The text was updated successfully, but these errors were encountered: