![]() |
Excel-Automation Arbeitsspeicher
Hallo zusammen,
warum zeigt der Taskmanager nach Beendigung der erzeugten Excelinstanz keine Änderung des Arbeitsspeichers an? Folgendes mit XE3 erzeugtes Minimalprogramm:
Delphi-Quellcode:
Starte ich die Anwendung, zeigt der Taskmanager eine Belegung von 1.740K Arbeitsspeicher an.
unit Test_EXCEL_OLE;
interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls; type TForm1 = class(TForm) Button1: TButton; Button2: TButton; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private-Deklarationen } fExcel:Variant; public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.dfm} uses ComObj; procedure TForm1.Button1Click(Sender: TObject); begin fExcel:=CreateOleObject('Excel.Application'); fExcel.Application.SheetsInNewWorkBook:=3; fExcel.Workbooks.Add; fExcel.Sheets[1].Name := 'Test'; fExcel.Visible:=true; end; procedure TForm1.Button2Click(Sender: TObject); begin if VarType(FExcel)<>varEmpty then begin fExcel.Quit; fExcel:=unassigned; end; end; end. Wird Button 1 gedrückt (zum Erstellen der Instanz mit sichtbarem Worksheet), zeigt der Taskmanager eine Belegung von 1.960K Arbeitsspeicher an. Wird Button 2 gedrückt (Instanz schließen mit Quit und unassigned), bleibt der angezeigte Arbeitsspeicher ungefähr gleich (1.924K), hätte aber erwartet, den Ausgangswert von 1.740K wieder zu erreichen. Kann jemand helfen? VG ZYL |
AW: Excel-Automation Arbeitsspeicher
As Designed,
Delphi hat einen eigenen Memory-Manager der den Speicher von Windows in größeren Blöcken abholt und nicht umbedingt wieder an Windows zurückgiebt. Ebenfalls wird durch die Verwendung von OLE/COM einiges an Speicher angefordert welches erst beim Beenden der Anwendung wieder freigegeben wird. |
AW: Excel-Automation Arbeitsspeicher
Außerdem wird im Taskmanager standardmäßig die "falsche" Speicher-Spalte angezeigt.
"zugesicherte Größe" ist das, was wirklich reserviert wurde, inklusive dem, was z.B. ausgelagert wurde. Der standardmäßig angezeigte "private Arbeitssatz" ist sowas von unwichtig, vorallem wenn alle Programme zusammen dein Programm zur Auslagerung zwingen, darum vielleicht auch mal auf die "Seitenfehler" schauen ... da ist jeder Speicherzugriff auf ausgelagerten Speicher, der erst zurück geladen werden muß und somit das Programm langsamer macht. (ein bissl ist OK, aber wenn weit über x0.000, dann über mehr physischen RAM nachdenken oder "zugesichert" speicherhungrige Anwendungen entsorgen) Bis Win7 im Menü Ansicht und bei Win10 im Kontextmenü des Grid-Headers. |
AW: Excel-Automation Arbeitsspeicher
OK, danke für die Inputs.
VG ZYL |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:29 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz