Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

能否开放ICrossHttpRequest,ICrossHttpResponse的Reset的方法 #69

Open
leeonsoft opened this issue Jul 10, 2019 · 2 comments
Open

Comments

@leeonsoft
Copy link

在长连接的时候,一次请求完成后,服务端的ARequest: ICrossHttpRequest; AResponse: ICrossHttpResponse 这两个对象并没有被释放。要等到下一次 请求上来才能Reset,如果Request里面Post上来的比较大的Stream,那服务端的内存占用也是比较大的。所以在发送给客户端完成后,可以手工Reset掉这部分内存占用。另外ICrossHttpConnection 对象是否有最后一次访问时间?服务端针对长时间没有数据传输,并且还是长连接的,可以手工断开这些连接。

@winddriver
Copy link
Owner

实际上现在是在处理完请求之后就自动调用了Reset了,所以应该不会出现你说的请求响应之后还占用Post的内存, 你可以看看 ParseRecvData 这个方法里有着一段

` // 处理请求
if (LRequest.FParseState = psDone) then
begin
DoOnRequest(LHttpConnection);

  LRequest.Reset;
  LResponse.Reset;
end;

`

@elevenman2001
Copy link

实际上现在是在处理完请求之后就自动调用了Reset了,所以应该不会出现你说的请求响应之后还占用Post的内存, 你可以看看 ParseRecvData 这个方法里有着一段

` // 处理请求
if (LRequest.FParseState = psDone) then
begin
DoOnRequest(LHttpConnection);

  LRequest.Reset;
  LResponse.Reset;
end;

`

处理后马上调用Reset,就导致在DoOnRequest(LHttpConnection)里面不适合新开线程,因为新线程访问的Request被Reset了。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants