Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
"Out Of Memory" hatası
#1
Merhaba

10.3 Community kullanıyorum FMX uygulaması debug sırasında "out of memory" hatası vermeye başladı. Delphinin debug ettiği .aab dosyası boyutu 60-70mb tutuyor.
   

Debug sorunun çözmek için Delphi Compiler içinde aşağıdaki ayarı etkinleştirdim ve debug işlemini yapabildim.
   
Ama kod yazma sırasında bir çok sorunla karşılaşıyorum.
--Otomatik kod tamamlama çalışmıyor.
--Zaman Zaman Out of Memory hatası alıyorum.
--Sürekli kodların altı kırmızı çizgi ile çizip unit eksikliğini uyarıyor ama debug yapabiliyorum.
   
   
--Save butonuna basınca kaydetmesi 4-7sn sürüyor. F12 ile design kod arası geçiş çok yavaş.

Kullandıgım bilgisayar 16gb rami var.
Diğer FMx uygulamarında sorun yok bu sorun sadece bir uygulamada karşılaşıyorum.

Çözüm için ne tavsiye edersiniz?
İyi Çalışmalar.
Cevapla
#2
Hocam 3. parti bir component kullanıyormusunuz (Unidac, Devexp gibi).. Eğer unidac gibi bir component kullanıyorsanız ve connected'i true ise boyle hatalar ve geçiş yavaşlılıkları alabilirsiniz.
// Bilgi paylaştıkça çoğalır.. 

Cevapla
#3
(27-06-2021, Saat: 16:53)mcuyan Adlı Kullanıcıdan Alıntı: Hocam 3. parti bir component kullanıyormusunuz (Unidac, Devexp gibi).. Eğer unidac gibi bir component kullanıyorsanız ve connected'i true ise boyle hatalar ve geçiş yavaşlılıkları alabilirsiniz.
Cevabınız için teşekkürler.

Sadece Delphi ile componentleri kullanıyorum. Ama uygulama içinde bir çok resim içeren rectangle var.
3D bir obje de kullanıyorum.
Tüm işlemleri tek bir form da yapıyordum o zaman çok daha yavaştı ve sürekli out of memory alıyordum.hiç kod yazamıyordum.
3D objeyi başka bir frame taşıdım. sürekli Out of Memory hatası gitti. ama yine out of memory geliyor, bu hatayı alınca da Delphi kapatıp açmam gerekiyor.

Otomatik tamamlamanın çalışmaması da kod yazmayı zorlaştırıyor.

NVidia ayarlarını da bu şekilde değiştirdim ama IDE yine çok yavaş.
   
Cevapla
#4
@41linea41 projenizi olgunlaşmaya adım adım yaklaşırken, üzerinde net olduğunuz kısımları farklı formlara taşıyın derim. Sizin de yavaştan benimsediğiniz biçim zaten bu gibi görüyorum.

Form'ları farklılaştırısanız OutOfMemory verecek şekilde aynı anda tüm formlar açık olmayacağından IDE rahatlayacaktır.

RunTime zamanda ihtiyaç oldukça ilgili grafik, resim, video vs.vs neyse PARENT özelliğine, ana formunuzdaki bir paneli vb. atadığınız anda gösterim için forma çekmiş olacaksınız.

Bu sayede IDE tasarım aşamasında da sorun olmadan eskisi gibi hızla kod yazabilirsiniz.

Form sayınız bir anlamda gereksiz sayılan şekilde artacaktır ama asıl formunuzda çalışma alanınız rahatlayacak daha az veya hiç hata yapmanızı sağlayacağından verimlilik artacaktır. Bu durumda "gereksiz" kelimesinin yerini "ihtiyaçtan" kelimesi alacaktır.

Hatta imkanınız varsa bu içeriği Runtime'de dinamik olarak create edecek şekilde procedure / function / class helper vb. haline dönüştürün diyeceğim ama o ayrı bir işçilik.

Daha önce vermiştim belki hatırlarsınız silinen konu :

uses
  FMX.MaterialSources, FMX.Controls3D, FMX.Objects3D,
  FMX.Viewport3D, FMX.Ani, FMX.Effects, FMX.Types3D;

var
    FViewport3D             : TViewport3D;
    FSphere                 : TSphere;
    FFloatAnimation         : TFloatAnimation;
    FShadowEffect           : TShadowEffect;
    FLightMaterialSource    : TLightMaterialSource;
    FLight                  : TLight;

procedure AnimasyonHazirla( aX, aY: Single; aWith, aHeight: Integer; aImageFile:TFileName );
begin
  if NOT Assigned(FViewport3D) then begin
    FViewport3D             := TViewport3D.Create(nil);

    FSphere                 := TSphere.Create(FViewport3D);
    FShadowEffect           := TShadowEffect.Create(FViewport3D);
    FLight                  := TLight.Create(FViewport3D);

    FFloatAnimation         := TFloatAnimation.Create(FSphere);
    FLightMaterialSource    := TLightMaterialSource.Create(FSphere);

    With FViewport3D do begin
      Parent      := Application.MainForm;
      Color       := TAlphaColors.Null;
      Position.X  := aX;
      Position.Y  := aY;
      Size.Width  := aWith;
      Size.Height := aHeight;
    end;
    With FShadowEffect do begin
      Parent      := FViewport3D;
      Distance    := 50.0;
      Direction   := 45.0;
      Softness    := 0.30;
      Opacity     := 0.30;
      ShadowColor := TAlphaColors.Brown;
    end;
    With FLight do begin
      Parent          := FViewport3D;
      Color           := TAlphaColors.White;
      LightType       := TLightType.Directional;
      Visible         := True;
    end;
    With FSphere do begin
      Parent          := FViewport3D;
      RotationAngle.X :=  0.0;
      RotationAngle.Y :=  0.0;
      RotationAngle.Z := 45.0;
      Width           := 10.0;
      Height          := 10.0;
      Depth           :=  2.0;
      MaterialSource  := FLightMaterialSource;
      Visible         := True;
    end;
    With FFloatAnimation do begin
      Parent        := FSphere;
      Enabled       := True;
      Duration      := 6.0;
      Loop          := True;
      PropertyName  := 'RotationAngle.Y';
      StartValue    :=   0.0;
      StopValue     := 360.0;
      Start;
    end;
    With FLightMaterialSource do begin
      Parent        := FViewport3D;
      Diffuse       := TAlphaColors.White;
      Ambient       := TAlphaColors.Blue;
      Emissive      := TAlphaColors.Null;
      Specular      := TAlphaColors.Red;
      Texture.LoadFromFile( aImageFile );
      Shininess     := 30;
    end;
  end;
end;


procedure TForm1.Button1Click(Sender: TObject);
begin
  AnimasyonHazirla( 100, 100, 300, 300, ExtractFilePath(Paramstr(0)) + 'CheckerBoard.bmp' );
end;
Saygılarımla
Muharrem ARMAN

guplouajuixjzfm15eqb.gif
Cevapla
#5
(27-06-2021, Saat: 17:21)mrmarman Adlı Kullanıcıdan Alıntı: @41linea41 projenizi olgunlaşmaya adım adım yaklaşırken, üzerinde net olduğunuz kısımları farklı formlara taşıyın derim. Sizin de yavaştan benimsediğiniz biçim zaten bu gibi görüyorum.

Form'ları farklılaştırısanız OutOfMemory verecek şekilde aynı anda tüm formlar açık olmayacağından IDE rahatlayacaktır.

RunTime zamanda ihtiyaç oldukça ilgili grafik, resim, video vs.vs neyse PARENT özelliğine, ana formunuzdaki bir paneli vb. atadığınız anda gösterim için forma çekmiş olacaksınız.

Bu sayede IDE tasarım aşamasında da sorun olmadan eskisi gibi hızla kod yazabilirsiniz.

Form sayınız bir anlamda gereksiz sayılan şekilde artacaktır ama asıl formunuzda çalışma alanınız rahatlayacak daha az veya hiç hata yapmanızı sağlayacağından verimlilik artacaktır. Bu durumda "gereksiz" kelimesinin yerini "ihtiyaçtan" kelimesi alacaktır.

Hatta imkanınız varsa bu içeriği Runtime'de dinamik olarak create edecek şekilde procedure / function / class helper vb. haline dönüştürün diyeceğim ama o ayrı bir işçilik.

Daha önce vermiştim belki hatırlarsınız silinen konu :

uses
  FMX.MaterialSources, FMX.Controls3D, FMX.Objects3D,
  FMX.Viewport3D, FMX.Ani, FMX.Effects, FMX.Types3D;

var
    FViewport3D             : TViewport3D;
    FSphere                 : TSphere;
    FFloatAnimation         : TFloatAnimation;
    FShadowEffect           : TShadowEffect;
    FLightMaterialSource    : TLightMaterialSource;
    FLight                  : TLight;

procedure AnimasyonHazirla( aX, aY: Single; aWith, aHeight: Integer; aImageFile:TFileName );
begin
  if NOT Assigned(FViewport3D) then begin
    FViewport3D             := TViewport3D.Create(nil);

    FSphere                 := TSphere.Create(FViewport3D);
    FShadowEffect           := TShadowEffect.Create(FViewport3D);
    FLight                  := TLight.Create(FViewport3D);

    FFloatAnimation         := TFloatAnimation.Create(FSphere);
    FLightMaterialSource    := TLightMaterialSource.Create(FSphere);

    With FViewport3D do begin
      Parent      := Application.MainForm;
      Color       := TAlphaColors.Null;
      Position.X  := aX;
      Position.Y  := aY;
      Size.Width  := aWith;
      Size.Height := aHeight;
    end;
    With FShadowEffect do begin
      Parent      := FViewport3D;
      Distance    := 50.0;
      Direction   := 45.0;
      Softness    := 0.30;
      Opacity     := 0.30;
      ShadowColor := TAlphaColors.Brown;
    end;
    With FLight do begin
      Parent          := FViewport3D;
      Color           := TAlphaColors.White;
      LightType       := TLightType.Directional;
      Visible         := True;
    end;
    With FSphere do begin
      Parent          := FViewport3D;
      RotationAngle.X :=  0.0;
      RotationAngle.Y :=  0.0;
      RotationAngle.Z := 45.0;
      Width           := 10.0;
      Height          := 10.0;
      Depth           :=  2.0;
      MaterialSource  := FLightMaterialSource;
      Visible         := True;
    end;
    With FFloatAnimation do begin
      Parent        := FSphere;
      Enabled       := True;
      Duration      := 6.0;
      Loop          := True;
      PropertyName  := 'RotationAngle.Y';
      StartValue    :=   0.0;
      StopValue     := 360.0;
      Start;
    end;
    With FLightMaterialSource do begin
      Parent        := FViewport3D;
      Diffuse       := TAlphaColors.White;
      Ambient       := TAlphaColors.Blue;
      Emissive      := TAlphaColors.Null;
      Specular      := TAlphaColors.Red;
      Texture.LoadFromFile( aImageFile );
      Shininess     := 30;
    end;
  end;
end;


procedure TForm1.Button1Click(Sender: TObject);
begin
  AnimasyonHazirla( 100, 100, 300, 300, ExtractFilePath(Paramstr(0)) + 'CheckerBoard.bmp' );
end;
Cevabınız için teşekkür ederim.
3D obje de dışarıdan .obj dosyası ve png texture lerini yükledim .Runtime da bunu yapabilir miyim emin değilim. Deneyeceğim.

Diğer resim içeren rectangle nesnelerini de tavsiye ettiğiniz gibi başka frame lere taşıyayım.
Sonucu paylaşırım.

İyi Çalışmalar.
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  IOS Deployment Info.Plist hatası mcuyan 9 470 07-04-2026, Saat: 09:30
Son Yorum: RAD Coder
  Çözüldü _ Delphi Community Edition SDK ayarları hatası cinarbil 1 485 12-03-2026, Saat: 10:25
Son Yorum: damert6
  Android Veriabanı hatası mkucuktepe@msn.com 1 528 10-05-2025, Saat: 23:13
Son Yorum: mcuyan
  OrangeUI kurulum hatası 41linea41 11 2.615 10-03-2025, Saat: 10:02
Son Yorum: RAD Coder
  Delphi 12 Android 14 Bu uygulama Android'in son sürümüyle uyumlu değil hatası batuakin 3 1.114 04-03-2025, Saat: 13:51
Son Yorum: RAD Coder



Konuyu Okuyanlar: 1 Ziyaretçi