모든 하위 인스턴스가 동일한 값을 반환해야하는 경우가 있습니다. 많은 인스턴스가 있기 때문에 사용하는 메모리의 양을 줄이려고합니다. 다음 실험을 만들었습니다.모든 클래스 인스턴스가 동일한 값을 반환 할 때 사용되는 메모리 및 LOC 최적화
1) 필드를 사용하고 메서드를 한 번 구현하십시오. 이 구현은 24 바이트를 사용합니다.
private abstract class A{
private String string;
private int i;
public A(String string, int i) {
this.string = string;
this.i = i;
}
public String getName() {
return string;
}
public int getAge() {
return i;
}
}
private class B extends A{
public B() {
super("B",10);
}
}
2) 각 클래스에 대해 메소드를 다시 구현합니다. (이 구현은 16 바이트를 사용합니다)
private abstract class A{
public abstract String getName();
public abstract int getAge();
}
private class B extends A{
@Override
public String getName() {
return "B";
}
@Override
public int getAge() {
return 10;
}
}
VisualVm을 사용하여 객체 크기를 읽었습니다. 메모리 사용량을 줄이면서 메서드를 한 번만 구현할 수있는 방법을 본 사람이 있습니까?
미리 감사드립니다.
편집 : 제 질문은 몇 번이나 downvoted 때문에 제게 어떻게 개선 할 수 있는지 알려주세요.
두 번째 예제에서 'A'인터페이스를 만들려고 했습니까? – Bernat
@Bernat 이것은 단지 예일뿐입니다. 내 진짜 응용 프로그램에서 A는 몇 가지 일반적인 방법을 제공하는 클래스입니다. –
downvote : 왜 그것이 나쁜 질문이 될지 모르겠다. 나는 사람들이 마이크로 최적화를 좋아하지 않는다고 생각한다. – Joel