Merhaba dost geliştiriciler,Linq sorgu listesi bellek kullanımı
Bir Linq sorgusunu kullanarak, Oracle veritabanında BLOB biçiminde depolanan XML nesneleri listesi ihracatını geliştirmek için çalışıyorum.
Ne yazık ki, BLOB'lardan biri oldukça büyük ve bellek kullanımı okurken 2 GB'a kadar büyüyor. Benim fileSet
nesnesinin bir IQueryable<myRecord>
nesnesi. Ben
foreach (var file in fileSet){...}
ve
var files = fileSet.ToList(); //This time the list is causing the memory load.
foreach(file in files){...}
ve
var e = fileSet.AsEnumerable().GetEnumerator();
while(e.MoveNext()){...}
çalıştı Ama her zaman koç kullanıldığı konusunda bir listede büyük rekor çarptı. Dışa aktarımın oluşturulması için
Buffer.BlockCopy
'u kullanarak bazı kodları arıyordum, ancak bellek kullanımı nedeniyle bellek kullanımının azaltılması veya her blobun tembel yükünün nasıl kaldırılacağı hakkında bir fikriniz varsa, bu yönde daha fazla bir noktaya gerek yok.
İşleminize bir blob yüklemeniz gerekiyor mu, yoksa bunun nedeni, fileSet'in kayıt tanımının bu blob alanına sahip olmasıdır? –
@SergeyL Blob'a ihtiyacım var, bu yazılım bu bloğu yüklüyor ve xls dosyalarına aktarıyor, temelde xml içeride. Cevabınız için –