簡體   English   中英

關於 MimeMessage.Load 的 MimeKit 性能問題

[英]MimeKit Performance Question about MimeMessage.Load

我目前正在實現對更大 MIME 文件的打印支持,從 50MB 閾值到 2000MB,我正在做一些性能測試,我注意到 MimeMessage.Load(stream)(這是Load(Stream, CancellationToken)方法) 正在非常快地填充我的 RAM 內存,並且對於打印機將運行的某些平台,這會使它崩潰。

現在我正在向我的 Load 方法提供一個 NetworkStream 並且我讀到使用Load(Stream, Boolean, CancellationToken)可以幫助我解決我的性能問題。

有沒有人經歷過同樣的事情,也許可以解釋一下 Load 是如何持久工作的,以及我如何避免使用太多內存?

先謝謝了!

Load(Stream stream, bool persistent, CancellationToken cancellationToken)方法將避免將每條消息的內容加載到 RAM 中,除非該流不可查找。

NetworkStream不可查找。

如果要加載 2GB 大小的消息,則需要將內容從NetworkStream復制到FileStream然后使用persistent: true加載消息。

在 MimeKit 中, persistent參數告訴MimeParser ,在解析器完成消息解析,流將繼續存在並可讀。 MimeParser被告知這一點時,它不是將消息的內容加載到內存中,而是跟蹤流偏移量並創建一個代理Stream對象,該對象可用於讀取原始流的開始和結束流偏移量之間的內容流在稍后的時間點,並設置MimeMessage ,而不是一個MemoryStream

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM