gpt4 book ai didi

asp.net - Httphandler 可重用内存如何工作?

转载 作者:行者123 更新时间:2023-12-02 18:37:35 28 4
gpt4 key购买 nike

我创建了一个 HttpHandler,以下是 Web.config 中的设置

<add verb="*" path="*.png" type="MvcApplication1.Handler2"/>

IsReusable = true in HttHandler

假设我的应用程序中有 20 个用户,他们正在尝试输入以下网址

http://Domainname/abc.jpg

众所周知,如果IsReusable = false,在响应结束时,HttpApplication的HandlerRecycleList将设置为null,但在以下情况下则不然

IsReusable = true

问题

  1. IsReusable = true 的情况下,HttpHandler 内存对于所有用户来说都是公用的?
  2. 或者假设我请求了上述 url,该内存将仅分配给我,下次在我的情况下将重用它,而其他用户将在 session 基础上分配 HttpHandler 内存?

最佳答案

是的,该处理程序对于所有用户都是通用的。它不绑定(bind)到任何 session 对象。

如果将 Reusable 设置为 true,该实例将被缓存并在其他请求中重用,只需一遍又一遍地调用其 ProcessRequest 方法,而无需创建新实例。处理程序不会为此查看 session 。应用程序将根据需要创建尽可能多的处理程序来处理当前负载。

因此,如果您有 20 个用户同时访问您的应用,则会创建 20 个实例。另一方面,如果您有 20 个用户依次访问您的处理程序,则只会(重新)使用一个实例。

您无法控制创建的实例数量,这是按需完成的。

缺点是,如果您在处理程序中使用大量内存,这将对内存使用产生负面影响,因为这些实例将在 GC 周期中幸存下来。

您还必须确保 processRequest 末尾的状态对于下一个请求有效。

关于asp.net - Httphandler 可重用内存如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16728354/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com