Netty4底层用对象池和不用对象池实践优化
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Netty4底层用对象池和不用对象池实践优化,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2910字,纯文字阅读大概需要5分钟。
内容图文
![Netty4底层用对象池和不用对象池实践优化](/upload/InfoBanner/zyjiaocheng/1152/bfc3e479ae4749e7810a66cf4acb10b8.jpg)
随着JVM虚拟机和JIT即时编译技术的发展,对象的分配和回收是个非常轻量级的工作。但是对于缓冲区Buffer,情况却稍有不同,特别是对于堆外直接内存的分配和回收,是一件耗时的操作。为了尽量重用缓冲区,Netty提供了基于内存池的缓冲区重用机制。 性能测试表明,采用内存池的ByteBuf相比于朝生夕灭的ByteBuf,性能高23倍左右(性能数据与使用场景强相关)。
在4.x版本中,UnpooledByteBufAllocator是默认的allocator,尽管其存在某些限制。现在PooledByteBufAllocator已经广泛使用一段时间,并且我们有了增强的缓冲区泄漏追踪机制,所以是时候让PooledByteBufAllocator成为默认了。
优化前:
Class Name | Shallow Heap | Retained Heap |
---|---|---|
|
8 | 166,381,728 |
|
64 | 61,389,640 |
|
40 | 56,363,384 |
|
64 | 48,234,856 |
|
24 | 45,883,384 |
|
40 | 45,730,344 |
|
40 | 43,118,248 |
|
40 | 41,260,728 |
|
40 | 33,083,800 |
|
40 | 32,922,432 |
|
72 | 25,823,800 |
|
0.00 0.71 8.87 15.05 71.87 175 2.638 0 0.000 2.638
bootstrap.childOption(ChannelOption.ALLOCATOR, PooledByteBufAllocator.DEFAULT);//关键是这句
Class Name | Shallow Heap | Retained Heap |
---|---|---|
|
8 | 126,628,072 |
|
64 | 61,391,800 |
|
64 | 48,234,856 |
|
40 | 8,975,440 |
|
80 | 8,652,528 |
|
32 | 7,340,056 |
|
56 | 5,910,288 |
|
40 | 5,231,256 |
|
200 | 5,172,192 |
|
40 | 4,572,560 |
|
原文:http://blog.csdn.net/jiangguilong2000/article/details/39501541
内容总结
以上是互联网集市为您收集整理的Netty4底层用对象池和不用对象池实践优化全部内容,希望文章能够帮你解决Netty4底层用对象池和不用对象池实践优化所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。