Announcement

Collapse
No announcement yet.

Zuwenig Arbeitsspeicher

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Zuwenig Arbeitsspeicher

    Hallo,

    Ich erhalte öfters in der IDE die Meldung "Zuwenig Arbeitsspeicher für diese Operation" Alias: DBLINK_DV. Prozeß wurde angehalten.

    Rechner: Pentium-II 128 MB Ram, Windows-NT 4.0 Workstation (Srvpack 4), Interbase 5.1, Delphi 4

    Dies tritt meist auf wenn das Programm geändert wird und nochmal gestartet werden soll.

    <b>Ein weiteres Problem:</b>

    Beim wiederholten Start tritt manchesmal die Meldung "Engine-Konfigurationsdatei nicht gefunden" auf.

    Wird die IDE verlassen und neu aufgerufen, funktioniert wieder alles.
    Dies gilt auch für den erstgenannten Fehler.
    Diese Zwangsausstiege zwischendurch nerven aber ganz schön.

    Gruss aus Wien, Helmut

  • #2
    Hallo,

    in der <b>BDE-Verwaltung</b> lässt sich die BDE auf der Registerseite <b>Konfiguration</b> (System | INIT) freizügig konfigurieren. Dort sollten die Werte für die folgenden Parameter erhöht werden:

    <b>MAXBUFSIZE</b>: Enthält die maximale Größe des Speichers (in KB), der als Cachepuffer für die Daten einer Datenbank zugeordnet werden soll. Dieser Eintrag kann ein beliebiger ganzzahliger durch 128 teilbarer Wert zwischen MINBUFSIZE und der Gesamtgröße des für Windows zur Verfügung stehenden RAM sein. <br>
    Vorgabewert: 2048<br>

    <b>MAXFILEHANDLES</b> (Enthält die maximale Anzahl der Datei-Handles, die BDE verwenden darf. Der Eintrag kann ein ganzzahliger Wert zwischen 5 und 4096 sein. Bei höheren Werten erhöht sich die Arbeitsgeschwindigkeit, es werden aber auch mehr Windows-Ressourcen belegt.<br>
    Vorgabewert: 48 <br>

    <b>MEMSIZE</b>: Legt die maximale Größe des Arbeitsspeichers (in MB) fest, der von BDE verwendet werden kann. <br>
    Vorgabewert: 16 MB. Maximum: 205 MB. Bei Angabe einer höheren Zahl als 205 wird MEMSIZE auf 205 gesetzt.

    <b>SHAREDMEMSIZE</b>: Legt die maximale Größe des Arbeitsspeichers (in KB) fest, der von BDE für gemeinsam genutzte Ressourcen verwendet werden kann. <br>
    Vorgabewert: 2048*KB, Minimum: 2048<br>
    Wird ein Wert unter 2048 angegeben, wird 2048 verwendet. Datei-Handles, Treiber und System-, Client- sowie Tabellenobjekte sind gemeinsam genutzte Ressourcen und SHAREDMEMSIZE sollte erhöht werden, wenn viele dieser Objekte verwendet werden.

    P.S. Damit die BDE nicht bereits bei der Installation knapp ausgestattete Rechner überfordert, werden als Vorgabe sehr knappe Werte verwendet. Diese sollten (bei normaler RAM-Ausstattung) erhöht werden

    Comment


    • #3
      Guten Morgen, <br>
      auf welche werte koennte man die bde bei einem nt-system mit 32 MB stellen?<br>
      Was passiert, wenn die bde mehr datei-handels braucht, als, das system oder die einstellungen erlauben?

      gruesse, m

      Comment


      • #4
        Hallo,

        von <i>Cliff Cormier</i> (Borland BDE QA manager) wurde vor einiger Zeit die folgende Faustformel für einen Server (BDE wird von einem MIDAS-Server genutzt) veröffentlicht:

        1) BDE-Memorypool = Speicherausstattung des Rechners - 16MB <br>
        2) MEMSIZE = 0,75 * BDE-Memorypool <br>
        3) SHAREDMEMSIZE = 0,25 * BDE-Memorypool

        Beispiel für einen Rechner mit 64 MByte Arbeitspeicher: <br>
        1) BDE-Memorypool = 48 MByte<br>
        2) MEMSIZE = 36 MByte<br>
        3) SHAREDMEMSIZE = 1228

        Comment


        • #5
          Hallo zusammen,

          'Zu wenig Arbeitspeicher' -- diese Fehlermeldung ist wohl vor allem in Zusammenhang mit Oracle8/BDE
          ein beliebtes Thema! -- Die BDE-Readme und diverse News-Reader raten dazu, die BDE Funktionen
          DbiQPrepare / DbiQFree einzusetzen, um das Speicherloch zu stopfen. Wie ich diese Funktionen
          in unsere bestehenden Anwendung einbauen soll (geschätzte 1000 Queries) ist mir allerdings nicht
          klar -- hat irgendjemand eine Idee, wie ich z.B. anhängende simple Anfrage, umstricke????

          with QPrep do<br>
          begin<br
          Close;<br>
          SQL.clear;<br>
          SQL.Add('insert into XYZ (ID,Bez1,Bez2,Bez3)');<br>
          SQL.Add(' values (:Param1,');<br>
          SQL.Add(' :Param2,');<br>
          SQL.Add(' )');<br>
          Prepare;<br>
          for i:=1 to GanzViel do<br>
          begin<br>
          ParamByName('Param1').AsString:= inttostr(i);<br>
          ParamByName('Param2').AsString:='Bezeichnung';<br>
          ExecSQL;<br>
          end;<br>
          end<br>;
          .......

          P.S.: Was ich überhaupt nicht verstehe: Das "Problem" (ich würde es eher als Fehler bezeichnen)
          ist seit BDE 5.0 bzw. Oracle8/BDE bekannt -- wieso bekommt man das nicht in den Griff / wo
          liegt eigentlich die Ursache -- scheint diese "Problem"behebung ein nebensächliches Problem??

          Comment


          • #6
            Das Interessante an dem BDE/Oracle-Problem ist, dass die Funktionen DbiQPrepare / DbiQFree sowieso bei jedem Prepare bzw. Unprepare von der VCL durchgeführt werden. Also sollte dieses Problem im Zusammenhang mit Delphi gar nicht auftreten

            Comment

            Working...
            X