查看: 269|回复: 6

[转载]Java高并发程序设计学习笔记:Jetty分析

[复制链接]
论坛徽章:
15
Oracle研习者初级
日期:2013-08-08 23:03:13Java徽章
日期:2019-06-27 16:21:50python徽章
日期:2019-06-27 16:21:37股票徽章
日期:2019-01-24 16:03:16股票徽章
日期:2018-11-22 15:36:24Kafka徽章
日期:2018-10-18 15:09:17股票徽章
日期:2018-08-30 15:33:51spark徽章
日期:2018-06-14 15:36:26spark徽章
日期:2017-11-23 16:58:48Hadoop研习者初级
日期:2017-05-18 16:19:47Oracle研习者中级
日期:2017-04-27 17:49:47机器学习徽章
日期:2015-03-02 18:03:11
发表于 2019-6-17 01:05 | 显示全部楼层 |阅读模式

Java 高并发 程序设计

[转载]Java高并发程序设计学习笔记:Jetty分析
https://blog.csdn.net/dataiyangu/article/details/87894253#BlockingQueue_39
回复

使用道具 举报

新浪微博达人勋 xenron  实名认证
论坛徽章:
257
发表于 2019-6-17 17:08 | 显示全部楼层
初始化ByteBufferPool

ByteBuffer是一个数组,分为两种_indirect ByteBuffer(分配在堆当中)和_directByteBuffer(分配在内存当中),相当于一个对象池,这其中的byteBuffer实际上是可以复用的。
回复 支持 反对

使用道具 举报

新浪微博达人勋 xenron  实名认证
论坛徽章:
257
发表于 2019-6-17 17:08 | 显示全部楼层
在java中new是经过了的优化的,性能还是比较高,关键是回收,新生代的回收会更加的频繁。如果自己写一个线程池,还不如通过new、gc的方式,因为线程池必须是线程安全的,所以好多线程在用,拿到对象和归还对象的时候必须是线程安全的,如果简单的加synchronize,除非是特别大的超级对象,性能可能比new,好一点,否则,如果用synchronize构造的线程池性能还不如new出来的。
回复 支持 反对

使用道具 举报

新浪微博达人勋 xenron  实名认证
论坛徽章:
257
发表于 2019-6-17 17:08 | 显示全部楼层
Bucket理解为篮子,一个篮子里面只放一中大小的buffer
因为1-63k不可能每一个都有,也许系统中只需要32k,这个时候1k、2k等等都不需要,所以有一个延迟加载的功能
_direct Bucket数组 _indirect Bucket数组
回复 支持 反对

使用道具 举报

新浪微博达人勋 xenron  实名认证
论坛徽章:
257
发表于 2019-6-17 17:09 | 显示全部楼层
acquire

请求线程池。

public ByteBuffer acquire(int size, boolean direct)

size多大的内存,direct直接内存还是堆。
取得合适的Bucket 每个Bucket的大小不同,这里找到最合适的,取最接近的Buket大小
回复 支持 反对

使用道具 举报

新浪微博达人勋 xenron  实名认证
论坛徽章:
257
发表于 2019-6-17 17:09 | 显示全部楼层
例外处理

如果申请的ByteBuffer过大或者过小,无法在POOL中满足,则可以申请成功,但无法归还给POOL。
加入目前只有1-64k的bytebuffer,但是我需要120k大小的bytebuffer,就需要申请。
可以看到上面的require没有的话会创建,但是因为无法归还,所以最后会被gc
回复 支持 反对

使用道具 举报

新浪微博达人勋 gym0816  实名认证
论坛徽章:
46
cognos徽章
日期:2015-10-14 17:39:01Puppet徽章
日期:2015-09-11 14:42:22测试徽章
日期:2016-04-28 10:48:48数据展示徽章
日期:2016-06-23 11:26:00bash徽章
日期:2016-05-26 12:34:27Excel徽章
日期:2015-05-14 10:37:05投资理财徽章
日期:2015-04-02 14:37:21python徽章
日期:2016-07-15 12:04:23Java徽章
日期:2015-01-14 15:22:02linux徽章
日期:2016-05-12 12:18:10Oracle研习者高级
日期:2014-09-19 13:54:05推荐系统徽章
日期:2015-12-30 11:45:31
发表于 2019-7-5 15:31 | 显示全部楼层
谢谢楼主分享  内容很详细                                    
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

 

GMT+8, 2019-10-20 18:33 , Processed in 0.151060 second(s), 44 queries .

关闭

扫一扫加入
本版微信群