AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Excel-Automation Arbeitsspeicher

Ein Thema von ZYLAGON · begonnen am 2. Mai 2018 · letzter Beitrag vom 2. Mai 2018
Antwort Antwort
ZYLAGON

Registriert seit: 11. Nov 2015
50 Beiträge
 
Delphi 10.3 Rio
 
#1

Excel-Automation Arbeitsspeicher

  Alt 2. Mai 2018, 14:06
Hallo zusammen,

warum zeigt der Taskmanager nach Beendigung der erzeugten Excelinstanz keine Änderung des Arbeitsspeichers an?

Folgendes mit XE3 erzeugtes Minimalprogramm:

Delphi-Quellcode:
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.
Starte ich die Anwendung, zeigt der Taskmanager eine Belegung von 1.740K Arbeitsspeicher an.
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
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.202 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Excel-Automation Arbeitsspeicher

  Alt 2. Mai 2018, 14:21
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.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#3

AW: Excel-Automation Arbeitsspeicher

  Alt 2. Mai 2018, 15:02
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.
$2B or not $2B

Geändert von himitsu ( 2. Mai 2018 um 15:08 Uhr)
  Mit Zitat antworten Zitat
ZYLAGON

Registriert seit: 11. Nov 2015
50 Beiträge
 
Delphi 10.3 Rio
 
#4

AW: Excel-Automation Arbeitsspeicher

  Alt 2. Mai 2018, 19:38
OK, danke für die Inputs.

VG ZYL
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:43 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz