Tüm Platformlar için Hızlı Uygulama Geliştirme --->    Kitabımız...      Delphi

Konuyu Paylaş : facebook gplus twitter

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ı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlDatasnap 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, 

Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol 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ı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlAndoridde ç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ı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlEğ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.
Cevapla
#9
(01-11-2017, Saat: 09:37)hi_selamlar Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
(31-10-2017, Saat: 20:42)ermanispir@gmail.com Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlEğ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:  Linkleri Görebilmeniz İçin Giriş yap veya Üye Olnden faydalanmak gerekiyor.
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
#10
(01-11-2017, Saat: 09:48)Fesih ARSLAN Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
(01-11-2017, Saat: 09:37)hi_selamlar Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlMerhaba,

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:  Linkleri Görebilmeniz İçin Giriş yap veya Üye Olnden faydalanmak gerekiyor.

Yakinen takipcinizim hocam.
Bilgi ve paylaşımlar için bütün forum ahalisine saygılarımı sunuyorum.
Cevapla

Konuyu Paylaş : facebook gplus twitter





Konuyu Okuyanlar: 1 Ziyaretçi