AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi Verständnisfrage: TJSONObject create/free/destroy?
Thema durchsuchen
Ansicht
Themen-Optionen

Verständnisfrage: TJSONObject create/free/destroy?

Ein Thema von SearchBot · begonnen am 26. Jul 2022 · letzter Beitrag vom 29. Jul 2022
Antwort Antwort
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#1

AW: Verständnisfrage: TJSONObject create/free/destroy?

  Alt 26. Jul 2022, 15:23
Wie kann ich messen, ob ich innerhalb einer procedure ein Speicherleck habe (ich habe bisher nur den Taskmanager beobachtet, wie sich der Speicher meiner App verändert)?
Dafür liebe ich den Process Hacker bereites seit vielen vielen Jahren, da sehe ich detailiert Speichernutzung, Handles etc... Find ich ist ein Klasse Tool um sowas mal rasch zu checken.
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.751 Beiträge
 
Delphi 12 Athens
 
#2

AW: Verständnisfrage: TJSONObject create/free/destroy?

  Alt 26. Jul 2022, 15:30
Delphi-Quellcode:
    try
      jsonArr:= TJSONArray.Create;
      jsonArr.owned:=false;
      jsonArr.Add(p1);
      jsonArr.Add(p2);

      json.AddPair('path', jsonArr);
Mit dem AddPair bekommt das json das jsonArr ja übergeben. Wegen Owned := False gibt es das in seinem Destroy zwar nicht frei, aber reagiert doch verschnupft, wenn es jemand außerhalb freigibt ohne ihm das vorher durch ein RemovePair mitzuteilen.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Verständnisfrage: TJSONObject create/free/destroy?

  Alt 26. Jul 2022, 15:45
aber reagiert doch verschnupft, wenn es jemand außerhalb freigibt ohne ihm das vorher durch ein RemovePair mitzuteilen.
Ist aber auch klar, warum.

Es geht seine Child-Liste durch und will bei dem JsonArr nachsehn, was im .Owned drin steht, also ob es das freigeben soll, oder nicht.
Frage ist jetzt nur, warum Eba vergessen hat bei Freigabe von TJSONArray in dessen Owner sich aus der Liste auszutragen.

z.B. bei TObjektList steht das "Owned" im Owner und nicht in jedem Child ... Er guckt also nur in sich selbst nach, ob es freigeben soll, somit kann ihm dort egal sein, ob die Child-Objekte noch existieren, weil es nicht da drauf zugreifen muß.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
SearchBot

Registriert seit: 27. Jun 2004
Ort: N-W vom Bodensee
328 Beiträge
 
Delphi 12 Athens
 
#4

AW: Verständnisfrage: TJSONObject create/free/destroy?

  Alt 27. Jul 2022, 16:50
Mit dem AddPair bekommt das json das jsonArr ja übergeben. Wegen Owned := False gibt es das in seinem Destroy zwar nicht frei, aber reagiert doch verschnupft, wenn es jemand außerhalb freigibt ohne ihm das vorher durch ein RemovePair mitzuteilen.
Das TJSONgedöns hat mir irgendwie zuviel nicht nachvollziehbares Eigenleben.
Ich hab jetzt alle Freigaben und das Owned entfernt und gebe ganz zum Schluss nur das json.free

Jetzt schaue ich mir an, was FastMM dazu entdeckt, wie mir Himitsu empfohlen hat.

Und je, irgendwie ist das mit dem TJSONObject trotzdem nicht gut - ich habe die Funktion damit nur 1x aufgerufen und Auszug:
Code:
13 - 20 bytes: TJSONNumber x 2, TJSONObject x 2, TJSONString x 10, TJSONPair x 6, Unknown x 1
Offenbar gibt TJSON das nicht so frei, wie wir uns es erhofft haben.
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.751 Beiträge
 
Delphi 12 Athens
 
#5

AW: Verständnisfrage: TJSONObject create/free/destroy?

  Alt 27. Jul 2022, 16:52
Offenbar gibt TJSON das nicht so frei, wie wir uns es erhofft haben.
Alternativ könnte es aber auch an deinem Code liegen
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  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 10:11 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