Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Dosya kaydederken memory leak hatası.
#1
Photo 
Bir listbox da oluşturduğum XML dökümanını aşağıdaki kod ile kaydediyorum

SHXml.Items.SaveToFile(yol+'TEMPXML\Irsaliye.xml', TUTF8Encoding.Create);

Fakat Şöyle bir sorun var 'TUTF8Encoding.Create' komutu olunca aşağıdaki hatayı veriyor.

An unexpected memory leak has occurred. The unexpected small blck leaks are:
21 - 28 bytes: TUTF8Encoding x1

TUTF8Encoding.Create bu kodu kaldırdığım zaman böyle bir hata vermiyor.

Not : Unigui Trial Edition üzerinde almaktayım bu hatayı.
Faydalanılmayan bilgi, harcanmayan ve hiç kimseye hayrı dokunmayan define gibidir.

Hz. Muhammed (sav.)
Cevapla
#2
TUTF8Encoding.Create ile ilgili satır devamında işi bittiğinde Free etmiş olmayı ihmal etmiş olma olasılığınız nedir?
Saygılarımla
Muharrem ARMAN

guplouajuixjzfm15eqb.gif


Cevapla
#3
(23-06-2020, Saat: 02:17)KUNTAY Adlı Kullanıcıdan Alıntı: Bir listbox da oluşturduğum XML dökümanını aşağıdaki kod ile kaydediyorum

SHXml.Items.SaveToFile(yol+'TEMPXML\Irsaliye.xml', TUTF8Encoding.Create);

Fakat Şöyle bir sorun var 'TUTF8Encoding.Create' komutu olunca aşağıdaki hatayı veriyor.

An unexpected memory leak has occurred. The unexpected small blck leaks are:
21 - 28 bytes: TUTF8Encoding x1

TUTF8Encoding.Create bu kodu kaldırdığım zaman böyle bir hata vermiyor.

Not : Unigui Trial Edition üzerinde almaktayım bu hatayı.

Merhaba,
TEncoding, static class olduğundan create etmeden, doğrudan SaveToFile metoduna gönderebilirsiniz.  

   

Örnek:
 SHXml.Items.SaveToFile('TEMPXML\Irsaliye.xml', TEncoding.UTF8);
While true do; Hayat döngüsü, kısır değildir! Yapılan bir yanlış, o döngünün dışına çıkmanızı sağlayacaktır.
WWW
Cevapla
#4
TUTF8Encoding sınıfında bug vardı. Hangi sürümde düzelttiler bilmiyorum ama statik metodları kullansanız bile memory leak oluşuyordu.

Çözüm olarak bir değişkene atayıp , kullanıp , sonra free edebilirsiniz.


varUTF8: TUTF8Encoding.Create;

SHXml.Items.SaveToFile(yol+'TEMPXML\Irsaliye.xml', varUTF8);

FreeAndNil(varUTF8);
WWW
Cevapla
#5
(23-06-2020, Saat: 09:32)sadettinpolat Adlı Kullanıcıdan Alıntı: TUTF8Encoding sınıfında bug vardı. Hangi sürümde düzelttiler bilmiyorum ama statik metodları kullansanız bile memory leak oluşuyordu.

Çözüm olarak bir değişkene atayıp , kullanıp , sonra free edebilirsiniz.


varUTF8: TUTF8Encoding.Create;

SHXml.Items.SaveToFile(yol+'TEMPXML\Irsaliye.xml', varUTF8);

FreeAndNil(varUTF8);

Yaptığım testte Delphi 10.3.3 Rio ve Delphi 10.4 Sydney için TEncoding static sınıfında, herhangi bir bug'a rastlamadım.
While true do; Hayat döngüsü, kısır değildir! Yapılan bir yanlış, o döngünün dışına çıkmanızı sağlayacaktır.
WWW
Cevapla
#6
(23-06-2020, Saat: 08:22)mrmarman Adlı Kullanıcıdan Alıntı: TUTF8Encoding.Create ile ilgili satır devamında işi bittiğinde Free etmiş olmayı ihmal etmiş olma olasılığınız nedir?

Free etmiyordum ettiğim zaman donuyor etmediğim zaman donmuyordu.

Bu arada uniguide bu sorunu yaşıyorum normal windows desktopta bu sorun oluşmadı.

(23-06-2020, Saat: 09:25)Fesih ARSLAN Adlı Kullanıcıdan Alıntı:
(23-06-2020, Saat: 02:17)KUNTAY Adlı Kullanıcıdan Alıntı: Bir listbox da oluşturduğum XML dökümanını aşağıdaki kod ile kaydediyorum

SHXml.Items.SaveToFile(yol+'TEMPXML\Irsaliye.xml', TUTF8Encoding.Create);

Fakat Şöyle bir sorun var 'TUTF8Encoding.Create' komutu olunca aşağıdaki hatayı veriyor.

An unexpected memory leak has occurred. The unexpected small blck leaks are:
21 - 28 bytes: TUTF8Encoding x1

TUTF8Encoding.Create bu kodu kaldırdığım zaman böyle bir hata vermiyor.

Not : Unigui Trial Edition üzerinde almaktayım bu hatayı.

Merhaba,
TEncoding, static class olduğundan create etmeden, doğrudan SaveToFile metoduna gönderebilirsiniz.  



Örnek:
 SHXml.Items.SaveToFile('TEMPXML\Irsaliye.xml', TEncoding.UTF8);


Aynen dediğiniz gibi direk metoda atayabiliyormuşum :Smile  güzel çalıştı.


Acele cevap verdim exe dosyasını kapattığım anda aynı hatayı aldım.

(23-06-2020, Saat: 09:32)sadettinpolat Adlı Kullanıcıdan Alıntı: TUTF8Encoding sınıfında bug vardı. Hangi sürümde düzelttiler bilmiyorum ama statik metodları kullansanız bile memory leak oluşuyordu.

Çözüm olarak bir değişkene atayıp , kullanıp , sonra free edebilirsiniz.


varUTF8: TUTF8Encoding.Create;

SHXml.Items.SaveToFile(yol+'TEMPXML\Irsaliye.xml', varUTF8);

FreeAndNil(varUTF8);

Bunda da aynı hatayı verdi Sad
Faydalanılmayan bilgi, harcanmayan ve hiç kimseye hayrı dokunmayan define gibidir.

Hz. Muhammed (sav.)
Cevapla
#7
Aldığınız hata oluşturduğunuz bir nesneyi free etmediğinizden kaynaklı bir hata.
her create metodu ile oluşturduğunuz nesneyi free ediyorsanız ve dediğim şekilde yaparsanız bir problem çıkmaması lazım.
Kodun bir yerinde create edip ama free etmediğiniz bir nesne var.
WWW
Cevapla
#8
(23-06-2020, Saat: 13:57)KUNTAY Adlı Kullanıcıdan Alıntı:
(23-06-2020, Saat: 09:25)Fesih ARSLAN Adlı Kullanıcıdan Alıntı: Merhaba,
TEncoding, static class olduğundan create etmeden, doğrudan SaveToFile metoduna gönderebilirsiniz.  

Örnek:
 SHXml.Items.SaveToFile('TEMPXML\Irsaliye.xml', TEncoding.UTF8);

Aynen dediğiniz gibi direk metoda atayabiliyormuşum :Smile  güzel çalıştı.

Acele cevap verdim exe dosyasını kapattığım anda aynı hatayı aldım.

@sadettinpolat ın belirttiği bug olabilir. Delphi 10.3.3 veya 10.4'te bu sorun yok.
Hangi sürümü kullanıyorsunuz?
While true do; Hayat döngüsü, kısır değildir! Yapılan bir yanlış, o döngünün dışına çıkmanızı sağlayacaktır.
WWW
Cevapla
#9
(23-06-2020, Saat: 09:32)sadettinpolat Adlı Kullanıcıdan Alıntı: TUTF8Encoding sınıfında bug vardı. Hangi sürümde düzelttiler bilmiyorum ama statik metodları kullansanız bile memory leak oluşuyordu.

Çözüm olarak bir değişkene atayıp , kullanıp , sonra free edebilirsiniz.


varUTF8: TUTF8Encoding.Create;

SHXml.Items.SaveToFile(yol+'TEMPXML\Irsaliye.xml', varUTF8);

FreeAndNil(varUTF8);

Sadeddin bey ufak bir hata yapmışım değişkeni verirken şuan sizin söylediğiniz şekilde çözüldü.

(23-06-2020, Saat: 14:33)Fesih ARSLAN Adlı Kullanıcıdan Alıntı:
(23-06-2020, Saat: 13:57)KUNTAY Adlı Kullanıcıdan Alıntı: Aynen dediğiniz gibi direk metoda atayabiliyormuşum :Smile  güzel çalıştı.

Acele cevap verdim exe dosyasını kapattığım anda aynı hatayı aldım.

@sadettinpolat ın belirttiği bug olabilir. Delphi 10.3.3 veya 10.4'te bu sorun yok.
Hangi sürümü kullanıyorsunuz?

Delphi 10.3 Community Edition 

Değişkene  atayıp free edince hata vermedi.
Faydalanılmayan bilgi, harcanmayan ve hiç kimseye hayrı dokunmayan define gibidir.

Hz. Muhammed (sav.)
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Çözüldü - AdoQuery $Unnamed does not contain a member named Hatası KarahanMesut 2 121 19-09-2020, Saat: 01:26
Son Yorum: KarahanMesut
Photo Çözüldü - ESEGECE Socket IO HeartBeat Timeout exceeded Hatası KarahanMesut 4 242 17-09-2020, Saat: 15:49
Son Yorum: KarahanMesut
Sad FastReport-Memory Leak MugenPower 2 280 25-08-2020, Saat: 02:53
Son Yorum: MugenPower
  Dataset de Edit veya İnsert hatası guvenlik 4 425 12-08-2020, Saat: 09:27
Son Yorum: DelphiCan
  (Çözüldü)Memory aşımı powerghost 14 1.698 16-07-2020, Saat: 10:50
Son Yorum: mrmarman



Konuyu Okuyanlar: 1 Ziyaretçi