问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

tomcat 请求分析 Processor和Request复用

发布网友 发布时间:2023-03-10 07:15

我来回答

1个回答

热心网友 时间:2023-10-12 15:58

Tomcat详解(5)---Connector 分析 该文讲解了BIO、NIO下Connector的行为、

本文将以BIO,HTTP1.1的视角来阅读源码。
你需要知道Connector的Acceptor线程接收新连接(socket),会创建SocketProcessor来处理后续请求。如果不知道,请阅读:

本文将讲解接收新连接后,SocketProcessor如何处理后续请求的,以及"Processor"和"Request"的复用。图解如下:

在获取新连接后,SocketProcessor是用来处理一次请求的
我们先记住一个概念:

我们来看看SocketProcessor.run:

做的事情概括如下:

(synchronized用来对socket进行同步,毕竟会在新旧SocketProcessor之间移交)

然后我们要分析 handler.process 的行为。

其process方法是继承自AbstractProtocol的,我们分析一下:

我先说明几个变量/函数的用途,以便讲解:
recycledProcessors是一个并发队列,它所存的元素是用来处理接下来的请求的。通过 recycledProcessors.poll(); 取出一个processor(如果没有则调用 createProcessor() 创建一个),调用 processor.process 处理后面的请求,最后再调用 release(wrapper, processor, false, true); 把其内各个变量重置清空(而不是释放内存。这是为了避免反复申请内存)。

关于 release(wrapper, processor, false, true); 重置变量这一点,我进一步说明。让我们看下Http11Protocol.Http11ConnectionHandler.release:

关于两行函数调用的作用,我加注释说明了。我们再看recycle的实现。processor类型是Http11Processor,但recycle是在父类AbstractHttp11Processor里实现的:
其函数大致如下:

就是通过调用 recycle() 、设为-1或false,把一堆变量给重置为初始状态,但涉及数组的内存都没有释放掉。如果你还是不确定 recycle() 的行为,可自行跟踪查看,没必要在此耗费太多笔墨。

我们取 getInputBuffer().recycle(); 看下源码AbstractInputBuffer.recycle:

其中涉及了request的重置。说明Request是会回收,循环利用的

该文明确了以下几点:

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
世界气象组织对地面气象观测站的分布和类型有何统计? 气象仪器土壤温度 电脑为什么会出现一个小对话框然后黑屏? ...会出现黑屏 然后出现一个英文框 然后黑屏一下 在恢复 这是为什么... 我玩电脑游戏时 突然黑屏了然后出现了一个框里面有一句英语翻译后是输... ...玩英雄连好像改了屏幕大小,然后突然黑屏,出现个框在满屏幕走框里说... 今天在玩游戏时从桌面切入游戏时突然黑屏,然后出现这种对话框,到底是... ...刚进游戏就黑屏,然后弹出这样一个框(如图),哪位大神知道该怎么解决... 江苏海事职业技术学院宿舍费用为什么涨价 刘邦儿子除了刘盈和刘恒外 其他儿子又是什么下场 小天鹅洗衣机下面右边有一个小黄色怎样清洗 乳山属于华北地区吗? 乳山在哪个位置 乳山市的乳山在哪? 乳山是山东的哪个市 苏泊尔破壁机sp905主体参数 吴定水名字值多少分 夫妻赠送房产属于夫妻共同财产吗 一场相遇一生回忆一场相遇已成回忆,秋已暮,露成霜,好好已暮露成霜什么意思 750变压器放电会出现哪几种气体 酷家乐分享不了 酷家乐全景图为啥不能分享朋友圈 设主存的容量为4M,辅存的容量为340MB,计算机的地址线为28位,则虚存的最大容量是? hg8546m是不是千兆猫 治愈的笑容和治愈的歌声什么意思 百度贴吧查看回复消失不见了 王者荣耀墨子和白起谁历害 王者荣耀中白起和墨子哪个厉害 2023年3月3日属相运势播报与特吉生肖运势? 必看!12生肖增强桃花运的秘诀 法学就业方向及就业前景分析 桂山岛大万山距离 现今世界上经济总量第二位的国家 当今世界上有多少人? 黄钻隐身访问空间会增加浏览量吗 隐身访问空间会增加浏览量吗 河南葫芦和凯澄哪个好 arm-none-linux-gnueabi-objdump 有什么用 一瘸2瞎3......成语 瞎担心是什么意思 苹果x有耳机孔吗 注册一定要用手机号吗 注册一定要用手机号吗 一定要用手机号注册吗? 不绑定手机号码可以注册吗? 资信证明英文怎么翻译 苹果手机用酷我音乐下载的音乐,把酷我卸载后就没有了,请问怎么把苹果里的音乐移动到电脑上或者移动到闪 文明重启国际服狂暴游戏体验时间不够怎么玩 文明重启行动基地如何玩文明重启行动基地怎么玩 如何最快最有效的去除眼袋