-
Notifications
You must be signed in to change notification settings - Fork 510
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Improve some code, fix some bugs #3317
Conversation
…y are NOT inheritable
由于无法修复windows JDK 11下com.alibaba.fastjson2.fuzz.DeepTest.testObj的单测失败的问题,我先回滚了。 这些改进很好,但是否能否开PR来提交,一个commit修改太多不合适。 |
这已经算是拆分开后的了,只有几十个文件,每个文件的改动也很小,除了个别封装方法的,大多数都只有一两行代码的改动。 报错的那个,本地没法复现,看代码似乎是一个嵌套了 100000 层的 JSON,出现了 StackOverflowError,应该和具体环境的堆栈、内存参数设置有关。 |
最初我也是这么想的,但我将100000降到1000也会同样的错误,并且找不到原因,我就只能回滚了。分开提交可以找到错误的原因。 |
我数了一下,StackOverflowError 的溢出行数恰好是 1024,不过 Fastjson2 里面设置的是 2048(JDK 8 是 512),所以 JDK 超过 1024 就报错了。 |
这里比较奇怪的点是,其他平台,其他JDK没有报错 |
What this PR does / why we need it?
Summary of your change
StringBuilder
替代StringBuffer
、使用Class::method
简化 Lambda、减少不必要的拆箱/装箱 )containsKey( key ) + get( key )
简化为一次get( key )
调用( 仅限value
不为null
的场景),containsKey( key ) + remove( key )
简化为一次remove( key )
调用。String.replace()
替代String.replaceAll()
,避免不必要的正则表达式处理开销。com.alibaba.fastjson.util.TypeUtils#castToJavaBean(java.util.Map<java.lang.String,java.lang.Object>, java.lang.Class<T>, com.alibaba.fastjson.parser.ParserConfig)
和com.alibaba.fastjson2_demo.Int2Decoder#acceptField
。Please indicate you've done the following: