T
tuxedo
Gast
Gibts ne Möglichkeit dass man sich die Bytes, die eine Variable im Speicher belegt, ausgeben lassen kann?
- Alex
- Alex
Runtime runtime = Runtime.getRuntime();
long max = runtime.maxMemory();
long free = runtime.freeMemory();
long total = runtime.totalMemory();
Dafür ist erst mal die Metrik interessant.alex0801 hat gesagt.:Dachte halt es gäbe was um eine Varibale exakt zu bestimmen.
public int System.getMemoryUsage(Object o)
Und ich habe dir bereits erklärt warum es so etwas nicht gibt. Weil sich jeder auf eine andere Metrik bezieht und eine allgemeine Methode daher Unsinn ist.alex0801 hat gesagt.:Code:public int System.getMemoryUsage(Object o)
oder so, wäre das halt "cooler" gewesen.
Um hier nicht weiter abzuschweifen nehmen wir ein ganz einfaches Beispiel.SlaterB hat gesagt.:es gibt doch nur eine Metrik, die kinderleicht als die entscheidene zu erkennen und zu berechnen ist:
der aktuelle Speicherverbrauch des Objekes,
class Foo{
public String bar;
}
String instanzen werden in einem Pool gesammelt und unter den Objekten verteilt. Der selbe String (und substrings davon) belasten den Speicher also nur einmal.Gast hat gesagt.:Speicherverbrauch = Referenz auf String + Größe von String Objekt
und die Größe vom String kann man dann rekursiv wieder auflösen bis man bei den primitiven datentypen angekommen ist
Nein, genau die gibt es nicht. Es gibt mehrere Einzelgrößen die je nach Metrik zusammengesetzt werden müssen.SlaterB hat gesagt.:wie auch immer es geregelt ist, es gibt eine eindeutige vom System vorgegebene aktuelle Größe
Richtig, Runtime.getFreeMemory gibt es (hier ist es auch eine eindeutige Sache, und richtig, die Belegung des Arbeitsspeichers lässt sich eindeutig bestimmen, und richtig, es ist eine nützliche Information.SlaterB hat gesagt.:da es aber eben nur einen einzelnen Arbeitsspeicher zu verwalten gibt,
ist die Belegung dieses Arbeitsspeichers zum einen eine äußerst sinnvolle Information und zum anderen eindeutig zu berechnen,
(zum dritten: gibts zum Teil schon, siehe Runtime.getFreeMemory())