簡體   English   中英

大圖像上的ImageResizer內存不足異常

[英]ImageResizer Out of Memory Exception on large image

我繼承了一個站點,該站點充滿了過大且未壓縮的圖像,因此我正在自動執行糾正該任務的任務,除了一定大小的文件以外,該任務通常可以正常工作。 例如,我有一個8176x6132 300dpi和24位深度的JPG圖像,文件大小為4.49mb。

這是我的ImageJob

var instructions = new Instructions("width=1920;height=0;mode=max");
var resizedImg = new ImageJob(filePath, filePath, instructions).Build();

我的機器上有大量可用資源,但內存不足卻無法使用。 當我現在測試時,我有90%的CPU空閑和51%的內存。

我的機器有:

  • 英特爾®酷睿TMi7四核處理器i7-4790(3.6GHz)8MB緩存
  • 16GB金士頓DUAL-DDR3 1600MHz

為什么這會失敗? 當我運行ImageJob時,在內存出現故障之前(據我所知)並沒有增加內存的使用。

我正在將ImageResizer 3.4.3與DiskCache插件一起使用。

我還要注意,我可以在Photoshop中打開問題文件,將其長邊調整為3000px,保存然后運行相同的ImageJob,然后完成該操作而不會出現錯誤。

診斷頁面輸出和異常堆棧跟蹤

首先,以64位模式而不是32位模式運行該進程。這樣可以更好地找到所需的150mb,62mb和12mb連續內存塊。 如果觸發后備代碼路徑,或者圖像是CMYK jpeg(常見)或有問題,則可能需要另外200mb。

其次,由於您未使用URL API,因此請確保已限制要處理的並發圖像的數量。 在ImageResizer v3中,一次執行1或2。

第三,升級到v4並使用FastScaling插件。 您將獲得實際的並發性 ,並且將在較小的時間內保留較大的RAM塊,這意味着您可以很輕松地將如此大的文件的吞吐量提高10倍。

暫無
暫無

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

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