{"push_id":1069510886,"size":1,"distinct_size":1,"ref":"refs/heads/recycle_derived_buf_2","head":"7520757444bca695c60c15c4d6cf5d1e78d0e60e","before":"adc36bb95c7ff2a4d1e7335e865f0cd0cad9bc31","commits":[{"sha":"7520757444bca695c60c15c4d6cf5d1e78d0e60e","author":{"email":"8efd86fb78a56a5145ed7739dcb00c78581c5375@motd.kr","name":"Trustin Lee"},"message":"Make retained derived buffers recyclable\n\nRelated: #4333 #4421 #5128\n\nMotivation:\n\nslice(), duplicate() and readSlice() currently create a non-recyclable\nderived buffer instance. Under heavy load, an application that creates a\nlot of derived buffers can put the garbage collector under pressure.\n\nModifications:\n\n- Add the following methods which creates a non-recyclable derived buffer\n  - retainedSlice()\n  - retainedDuplicate()\n  - readRetainedSlice()\n- Add the new recyclable derived buffer implementations, which has its\n  own reference count value\n- Add ByteBufUtil.retainedSlice() and retainedDuplicate() so that a user\n  can implement the new ByteBuf methods easily\n- Add ByteBufHolder.retainedDuplicate()\n- Add ByteBufHolder.replace(ByteBuf) so that..\n  - a user can replace the content of the holder in a consistent way\n  - copy/duplicate/retainedDuplicate() can delegate the holder\n    construction to replace(ByteBuf)\n- Use retainedDuplicate() and retainedSlice() wherever possible\n- Miscellaneous:\n  - Rename DuplicateByteBufTest to DuplicatedByteBufTest (missing 'D')\n\nResult:\n\nDerived buffers are now recycled when created via retainedSlice() and\nretainedDuplicate()","distinct":true,"url":"https://api.github.com/repos/netty/netty/commits/7520757444bca695c60c15c4d6cf5d1e78d0e60e"}]}