Out Of Memory Hatası Nasıl giderilir

Katılım
22 Ekim 2009
Mesajlar
151
Excel Vers. ve Dili
2007&2010
Merhaba Uzman Arkadaşlar;

Sorunum Out Of memory hatası;

Bu hatayı almamak için makinamı 64 bite çıkardım İ5 işlemcili masa üstüm var bu hatayı almıyorum artık ancak;

Macro kullandığım dosyada ay ay yüz binlerce kaydı analiz ediyorum işlemler ortalama 5-10 dk sürüyor aynı şekilde örneğin 3-4 ay için macrolu dosyayı çalıştırdığımda bir zaman sonra maco yavaşlamaya başlıyor . Task mng baktığımda excelin kullandığı ram 3-4 gb lara kadar çıkıyor . Bu sorun kullandığım değişkenlerden kaynaklı olabilir mi_ dizi yöntemiyle yaptığım karşılaştırmalarda var ve rami çok fazla kullandığımdan ramin şiştiğini düşünüyorum.

Sonuç olarak bu rami rahatlatacak memory temizleme yada boşaltma gibi bir yöntem önerebilirmisiniz.

bir macro olursa her yeni ayı analiz edip işlemler bittiğinde yeni aya geçmeden önce macroyu yeniden çalıştırdığımda önce ram boşaltma yapar sonra macro devam eder gibi.
 

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,383
Excel Vers. ve Dili
Office 365 (64 bit) - Türkçe
Kod:
dim arr () as variant

arr = range("a1:z100000").value

erase arr 
redim arr (0)
 
Katılım
22 Ekim 2009
Mesajlar
151
Excel Vers. ve Dili
2007&2010
ilginize teşekkürler bişey sorucam erase arr ile değişkenimi siliyoruz arr olarak tanımladığımız alanı mı? redim ile ne yapmış oluyoruz. Tşk.
 
Katılım
22 Ekim 2009
Mesajlar
151
Excel Vers. ve Dili
2007&2010
Ben normalinde Değişkenleri macronun sonunda örnegiğin SS değişkenim var satır sayıyor sonda bu değişekeni SS=0 yaparak 0 değeri veriyorum ama ram de bişey değişmiyor kullanım olarak.
 

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,383
Excel Vers. ve Dili
Office 365 (64 bit) - Türkçe
Önce yazdığım koddan başlayalım.

Örnekte 26 sütun X 100000 satırlı (toplamda 2.600.000 hücre) veri aralığını variant tipde (22 byte + tüm değerlerin uzunluğu) veriyi hafızaya alıyoruz. Ki, bu da bu aralıktaki tüm hücrelerde "A" harfi yazılı olduğunu varsayarsak yaklaşık 2,5 mb veri eder. İşin tuhaf tarafı, Excel uygulaması bu veriyi işlemek için bellekte çok daha fazla alan parselliyor.

"Erase" ile boyut değişmez; yalnız içeriği null string (" ") olur. Boyutunu da Redim arr(0) ile değiştiriyoruz. Yani tek satır, tek sütun olarak. Ancak, Excel uygulaması kendine parsellediği alanı dosyayı kapatıp açana kadar serbest bırakmaz.

"SS" isimli değişkeniniz bir "Long" ise, hafızada 4 byte yer kaplar. Yani bu değişkene "1" de atasanız, "2.000.000.000" da atasanız hafızada kapladığı alan 4 byte dır.

Değişkenlere ait yazdığım bir yazı ve örnek : http://www.excel.web.tr/derres/zeki/gursoy/printerconfig.htm
 
Katılım
22 Ekim 2009
Mesajlar
151
Excel Vers. ve Dili
2007&2010
Teşekkür ederim. İyi çalışmalar Dilerim.
 
Üst