Konuyu Oyla:
  • Derecelendirme: 3/5 - 2 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Aşırı Bellek Tüketimi
#1
Datasnap server ile yaptığım bağlantılarda ram problemi yaşıyorum ve blok her çalıştığında 40 ila 80 arasında ram kasıyor
ve bu toplanarak gidiyor..

RetListReg := ClientREST.Insert( ListReg ); kasma bu noktada oluyor.. her şeyi free yapıyorum close yapıyorum yok malesef bi türlü ram temizlenmiyor.. bu noktada takıldım kaldım.

 Var
 ListReg, RetListReg : TFDJSONDataSets;

 begin

   FDQ.Close;
   FDQ.SQL.Clear;
   FDQ.SQL.Add('SELECT * FROM bag_pc WHERE server IS NULL') ;
   FDQ.Open();
   ListReg := TFDJSONDataSets.Create;
   TFDJSONDataSetsWriter.ListAdd( ListReg, FDQ );

   FDQ.Close;

   if ClientREST = Nil then
   ClientREST := TServerMethods1Client.Create(ClientModule1.DSRestConnection1);

   RetListReg := TFDJSONDataSets.Create;
   RetListReg := ClientREST.Insert( ListReg );   /// RAM BURDA ŞİŞİYOR 50 60 70 80 mb

   Assert(TFDJSONDataSetsReader.GetListCount(RetListReg) = 1);

   FDMemTable.Close;
   FDMemTable.AppendData(TFDJSONDataSetsReader.GetListValue(RetListReg, 0));
   FDMemTable.First;

..

..

 RetListReg.Free; 
 ListReg.Free;           
 FDMemTable.Close; 

Cevapla
#2
(27-10-2016, Saat: 20:52)bilrax Adlı Kullanıcıdan Alıntı: Datasnap server ile yaptığım bağlantılarda ram problemi yaşıyorum ve blok her çalıştığında 40 ila 80 arasında ram kasıyor
ve bu toplanarak gidiyor..

RetListReg := ClientREST.Insert( ListReg ); kasma bu noktada oluyor.. her şeyi free yapıyorum close yapıyorum yok malesef bi türlü ram temizlenmiyor.. bu noktada takıldım kaldım.

 Var
 ListReg, RetListReg : TFDJSONDataSets;

 begin

   FDQ.Close;
   FDQ.SQL.Clear;
   FDQ.SQL.Add('SELECT * FROM bag_pc WHERE server IS NULL') ;
   FDQ.Open();
   ListReg := TFDJSONDataSets.Create;
   TFDJSONDataSetsWriter.ListAdd( ListReg, FDQ );

   FDQ.Close;

   if ClientREST = Nil then
   ClientREST := TServerMethods1Client.Create(ClientModule1.DSRestConnection1);

   RetListReg := TFDJSONDataSets.Create;
   RetListReg := ClientREST.Insert( ListReg );   /// RAM BURDA ŞİŞİYOR 50 60 70 80 mb

   Assert(TFDJSONDataSetsReader.GetListCount(RetListReg) = 1);

   FDMemTable.Close;
   FDMemTable.AppendData(TFDJSONDataSetsReader.GetListValue(RetListReg, 0));
   FDMemTable.First;

..

..

 RetListReg.Free; 
 ListReg.Free;           
 FDMemTable.Close; 


Merhaba, 

SetProcessWorkingSetSize API'si işinize yarayabilir.. 


Delphi Kullanımı için,
 SetProcessWorkingSetSize(GetCurrentProcess, $ffffffff, $ffffffff);

Kodlarınızın en sonuna ekleyebilirsiniz.

Kolay gelsin..
Amatör Küme Bilgisayar Programcısı
WWW
Cevapla
#3
gecenin bi saatinde yazdığınız için teşekkür ederim ama bu api android platforlara uygunmudur?  önerdiğiniz komut winapi.psAPI kütüphanesinde yanlış bakmadıysam eğer..
Cevapla
#4
Andoridde çalışacağından açıkçası emin değilim.. Bu bir Windows API si Sad
Amatör Küme Bilgisayar Programcısı
WWW
Cevapla
#5
(28-10-2016, Saat: 02:02)barutali Adlı Kullanıcıdan Alıntı: Andoridde çalışacağından açıkçası emin değilim.. Bu bir Windows API si Sad

sağlık olsun üstad.. bi hal çare bulucam artık Big Grin
Cevapla
#6
Sorunu kısmen çözdüm arkadaşlar.. connectore aşırı yüklenmeden dolayı olmuş.. ilk bağlantıda bi 40 mb ram kasıyo sonrasında bir daha olmuyor.. şimdilik iş görür gibi..
Cevapla
#7
Eğer imkanınız varsa devart DAC componentlerini öneririm, datastap ile filan uğraşmadan direkt olarak uzak db ye bağlanabiliyorsunuz. bunun sayesinde yazdığım mobil aplikasyonları masaüstü app yazar gibi yazıyorum, bence büyük kolaylık.
Cevapla
#8
(31-10-2017, Saat: 20:42)ermanispir@gmail.com Adlı Kullanıcıdan Alıntı: Eğer imkanınız varsa devart DAC componentlerini öneririm, datastap ile filan uğraşmadan direkt olarak uzak db ye bağlanabiliyorsunuz. bunun sayesinde yazdığım mobil aplikasyonları masaüstü app yazar gibi yazıyorum, bence büyük kolaylık.

Merhaba,

Direkt bağlantı oluşturulacak mobile app. de güvenlik açığı oluşturmaz mı sizce ?
Kodlar okunma riski yüksek bence DataSnap veya ara bir katman ile işlem yapma
bana daha doğru geliyor.
Amaç, bilginin de/aklın da zekat'ını vermek.
Cevapla
#9
(01-11-2017, Saat: 09:37)hi_selamlar Adlı Kullanıcıdan Alıntı:
(31-10-2017, Saat: 20:42)ermanispir@gmail.com Adlı Kullanıcıdan Alıntı: Eğer imkanınız varsa devart DAC componentlerini öneririm, datastap ile filan uğraşmadan direkt olarak uzak db ye bağlanabiliyorsunuz. bunun sayesinde yazdığım mobil aplikasyonları masaüstü app yazar gibi yazıyorum, bence büyük kolaylık.

Merhaba,

Direkt bağlantı oluşturulacak mobile app. de güvenlik açığı oluşturmaz mı sizce ?
Kodlar okunma riski yüksek bence DataSnap veya ara bir katman ile işlem yapma
bana daha doğru geliyor.

Merhaba,
Mobil platformdaki cihaz ve SDK çeşitliliğine bağlı olarak; doğrudan veri tabanı bağlantılarında çoğu zaman oluşan bir veri tabanı hatasında uygulama kırılıyor.
Hatta bunu fırsata çevirmenin bir yolunu buldum. Smile Bildiğiniz gibi mobil uygulamalarda çıkış (uygulamayı tamamen sonlandırma) olayı yok. Kodla uygulamayı sonlandıramıyoruz. 
Çıkış butonuna veri tabanı hatası üretecek bir işlem yapmanız yeterli olacaktır. Smile

Uygulamanın hedef kitlesi bir veya daha fazla müşteri ise; en doğrusu sizin de belirttiğiniz gibi, mobil platformda connection barındırmayan bir uygulama mimarisi geliştirmektir.
Delphi için Yeni Nesil Teknoloji olan:  Linux Sunucu Gücünden faydalanmak gerekiyor.
Cevapla
#10
(01-11-2017, Saat: 09:48)Fesih ARSLAN Adlı Kullanıcıdan Alıntı:
(01-11-2017, Saat: 09:37)hi_selamlar Adlı Kullanıcıdan Alıntı: Merhaba,

Direkt bağlantı oluşturulacak mobile app. de güvenlik açığı oluşturmaz mı sizce ?
Kodlar okunma riski yüksek bence DataSnap veya ara bir katman ile işlem yapma
bana daha doğru geliyor.

Merhaba,
Mobil platformdaki cihaz ve SDK çeşitliliğine bağlı olarak; doğrudan veri tabanı bağlantılarında çoğu zaman oluşan bir veri tabanı hatasında uygulama kırılıyor.
Hatta bunu fırsata çevirmenin bir yolunu buldum. Smile Bildiğiniz gibi mobil uygulamalarda çıkış (uygulamayı tamamen sonlandırma) olayı yok. Kodla uygulamayı sonlandıramıyoruz. 
Çıkış butonuna veri tabanı hatası üretecek bir işlem yapmanız yeterli olacaktır. Smile

Uygulamanın hedef kitlesi bir veya daha fazla müşteri ise; en doğrusu sizin de belirttiğiniz gibi, mobil platformda connection barındırmayan bir uygulama mimarisi geliştirmektir.
Delphi için Yeni Nesil Teknoloji olan:  Linux Sunucu Gücünden faydalanmak gerekiyor.

Yakinen takipcinizim hocam.
Bilgi ve paylaşımlar için bütün forum ahalisine saygılarımı sunuyorum.
Amaç, bilginin de/aklın da zekat'ını vermek.
Cevapla




Konuyu Okuyanlar: 1 Ziyaretçi