For hvert objekt du opreter i java, har den en ekstra hukommelse på 8 byte.
En boolean fylder 1 byte, liegsom en byte også fylder en byte.
Hvis du vil vide mere, omkring hvad de andre typer fylder, kan du kigge nærmere på denne side:
http://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.htmlMen, hvis du vil se, hvor meget en klasse fylder i hukommelsen, så skal du tage og ligge alle dine fields sammen, og så ligge et overhead på 8 bytes oven i hatten.
Så den følgende klasse:
- public class Car implements Comparable<Car> {
-
- private String model;
- private int topSpeed;
-
- public Car(String model, int topSpeed)
- {
- this.model = model;
- this.topSpeed = topSpeed;
- }
-
- public void setModel(String model) { this.model = model; }
- public void setTopSpeed(double topSpeed) { this.topSpeed = topSpeed; }
-
- public String getModel() { return model; }
- public int getTopSpeed() { return topSpeed }
-
- //Gør så vores klasse sorteres via topSpeed
- public int compareTo(Car car)
- {
- return new Integer(topSpeed).compareTo(new Integer(car.getTopSpeed()));
- }
-
- }
fylder altså: 4(int) + 8(overhead) + 2(String +1byte for, hver char i Stringen)
Så, hvis bilen ikke har noget navn, så fylder den altså 14 bytes i hukommelsen, hvor at hvis den hedder "fiat" så fylder den: 4+8+2+4(bogstaver) = 18bytes
Det er vigtigt, at huske at den fylder, det pr. instance du har af klassen.
Men desto større dine klasser er, desto mindre procent mæssigt overhead har man i java.