hprose / hprose-golang

Hprose is a cross-language RPC. This project is Hprose for Golang.
MIT License
1.26k stars 205 forks source link

修复异常包引起的slice分配过大造成的内存泄露 #91

Closed lanfengye2008 closed 2 years ago

lanfengye2008 commented 5 years ago

修复异常包引起的slice分配过大造成的内存泄露

coveralls commented 5 years ago

Coverage Status

Coverage decreased (-1.07%) to 40.558% when pulling d3f5da211a701305e59856a3c2535bc33ae505c5 on lanfengye2008:master into 6c2a3b7138ea2c7dc4a8907d644f9f134e0fae74 on hprose:master.

andot commented 5 years ago

10000 也许并不算大,因为有时候发送 1M 甚至 10M 的数据也是正常的,最好是让用户自己定义一个最大值,超过的话直接返回异常信息就行了。3.0 中是这么干的,另外,3.0 中还加了个 CRC 的头部校验。不过加这个之后,跟 2.0 就不兼容了。

lanfengye2008 commented 5 years ago

我们的业务场景是通过rpc传递参数,一般长度不会超过100。 当分配过大的slice空间时候,会造成go gc无法回收造成崩溃,异常包可能长度会超过几亿。
期待3.0更加完善

andot commented 2 years ago

3.0 已发布,这个可以关闭了。