第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

為什么同一頁面的每個(gè)頁面加載后內(nèi)存使用量都會(huì)增加

為什么同一頁面的每個(gè)頁面加載后內(nèi)存使用量都會(huì)增加

C#
阿波羅的戰(zhàn)車 2023-09-24 17:22:03
我有一個(gè)簡單的視圖來顯示大約 2000 個(gè)客戶(尚未尋呼,這是我流程的下一步)。這是我的控制器部分:public class CustomersController : Controller{    private readonly MyModel _context;    public CustomersController(MyModel context)    {        _context = context;    } // GET: Customers    public async Task<IActionResult> Index()    {        var customers = await _context.Customers.ToListAsync();        return View(customers);    }}和一個(gè)簡單的視圖:@model IEnumerable<Customer>  @{ ViewData["Title"] = "Index"; }  <table class="table">    <thead>      <tr>        <th>          @Html.DisplayNameFor(model => model.Name)        </th>        <th></th>      </tr>    </thead>    <tbody>      @foreach (var item in Model) {      <tr>        <td>          @Html.DisplayFor(modelItem => item.Name)        </td>      </tr>      }    </tbody>  </table>每當(dāng)我刷新頁面(返回相同的結(jié)果集)時(shí),進(jìn)程內(nèi)存每次都會(huì)增加 20 到 30 MB。下面是內(nèi)存診斷的屏幕截圖:快照 1 在第一頁加載之前;快照 2 是在第一頁加載之后;快照 3 是同一頁面數(shù)十次重新加載后的結(jié)果...我認(rèn)為內(nèi)存會(huì)保持不變,因?yàn)?DbContext 應(yīng)該在每次請(qǐng)求時(shí)被釋放,不是嗎?我做錯(cuò)了什么以及如何控制內(nèi)存使用?
查看完整描述

2 回答

?
qq_花開花謝_0

TA貢獻(xiàn)1835條經(jīng)驗(yàn) 獲得超7個(gè)贊

我認(rèn)為您對(duì)垃圾收集器的目的有一些誤解。其目的不是為了最小化內(nèi)存使用;而是為了減少內(nèi)存使用。相反,它是為了確保您的進(jìn)程有可用的內(nèi)存。這是一個(gè)重要的區(qū)別。

垃圾收集器將定期清理內(nèi)存中不再使用的對(duì)象,并將它們標(biāo)記為要收集。稍后,當(dāng) GC 檢測到內(nèi)存不足時(shí),它將激活并:

  1. 移動(dòng)?xùn)|西,這樣你就有更少的小內(nèi)存塊和更多的大內(nèi)存塊(內(nèi)存只能在連續(xù)的塊中分配)。

  2. 收集對(duì)象并釋放它們的內(nèi)存。

它將很少運(yùn)行??梢詫?duì)其進(jìn)行配置,以根據(jù)特定要求定制 GC,但很少需要這樣做。每次 GC 運(yùn)行時(shí),它都會(huì)盡可能少地執(zhí)行操作以確保您的程序擁有所需的內(nèi)存。這樣做是因?yàn)槔占杀?em>高昂,并且可能導(dǎo)致明顯的性能峰值。

處置一個(gè)對(duì)象并不意味著“立即擺脫它并釋放其內(nèi)存”。意思是“我不再使用這個(gè)了,所以你可以在方便的時(shí)候清理它?!?nbsp;(軟件太有禮貌了?。┮虼?,處理上下文不會(huì)立即減少內(nèi)存使用量。可以向 GC 發(fā)出非常強(qiáng)烈的提示,表明您想要收集,但很少需要且不建議這么做。

所以,你的 GC 會(huì)等待。它會(huì)等待時(shí)機(jī),直到檢測到“嘿,我們內(nèi)存不足!” 然后,也只有到那時(shí),它才會(huì)檢查您的進(jìn)程是否有無法收集的對(duì)象。

因此,當(dāng)您的內(nèi)存消耗開始超過進(jìn)程可用的內(nèi)存時(shí),您可以預(yù)期 GC 將會(huì)運(yùn)行。然后,它將盡快釋放內(nèi)存。它的目標(biāo)只是確保您的進(jìn)程有可用的內(nèi)存。

那么,您可以期待觀察到什么?

  1. 你的進(jìn)程內(nèi)存會(huì)像過山車一樣上下波動(dòng)。它上漲的頻率會(huì)比下跌的頻率更高。

  2. 您的進(jìn)程內(nèi)存使用量將趨向于最大可用內(nèi)存,并且通常只會(huì)在接近限制時(shí)才會(huì)下降。

  3. 集合不會(huì)頻繁發(fā)生(根據(jù)需要),并且大小可能相差很大。

我認(rèn)為您無需擔(dān)心任何事情,并且建議您僅在開始出現(xiàn)內(nèi)存不足錯(cuò)誤時(shí)才擔(dān)心內(nèi)存使用情況。


查看完整回答
反對(duì) 回復(fù) 2023-09-24
?
寶慕林4294392

TA貢獻(xiàn)2021條經(jīng)驗(yàn) 獲得超8個(gè)贊

您實(shí)際上可以使用 MemoryDiagnoser 查看內(nèi)存使用情況和 GC 收集的情況。我建議使用 GcMode Server 為 TRUE,因?yàn)樗鼘⒏玫叵蚰故?GC 如何在服務(wù)器上而不是在本地工作站上工作。我知道學(xué)習(xí)如何使用它很麻煩,但經(jīng)過一段時(shí)間后,這是非常值得的。

在 VS 中查看內(nèi)存使用情況的問題是因?yàn)樗幱谡{(diào)試模式,而這并不完全是您的代碼在發(fā)布時(shí)的行為方式。


查看完整回答
反對(duì) 回復(fù) 2023-09-24
  • 2 回答
  • 0 關(guān)注
  • 170 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)