2014-03-30 2 views
2

내가 정말로 알고 싶은 것은 : Java에서 "Family"라는 클래스를 생성하고 각 패밀리는 멤버 변수로 "familyMembers"를 가지므로 각각의 "가족"이란 "가족"은 무엇입니까? 다시 말하면, 스미스 가족이 3 명의 아빠, 아빠, 엄마, 그리고 아이를 가졌다면, 가족 "스미스"를 각 가족의 구성원 변수로 만드는 데 더 많은 비용이들 것이라고하십니까? 멤버 : 아빠, 엄마, 그리고 아이? 당신이 new 키워드 또는 원시 형을 사용하지 않는Java : 하나의 변수에 대한 참조가 더 많은 메모리를 사용합니까?

+2

이것은 명확하지 않습니다. 당신이 이야기하는 것을 설명하기 위해 몇 가지 코드 스 니펫을 제공 할 수 있습니까? –

+0

코드 스냅을 제공하면 문제를 더 잘 설명 할 수 있습니다. –

+1

예, 클래스의 새 (정적이 아닌) 객체 참조는 추가 4 바이트의 비용이 듭니다. – spectre

답변

1

모든 비용이 부과됩니다. 다른 클래스 변수를 추가하는 경우 두 가지 방법으로 비용이 청구됩니다. 클래스가로드 될 때 클래스의 선언에 대한 첫 번째 바이트와 각 참조에 대해 또 다른 4 바이트. 클래스 정의를 메모리 (영구, permgen 공간)에로드해야하고 모든 참조가 스택에서 고유 한 참조 당 4 바이트이기 때문입니다.

0

+1

프리미티브를 잊지 마라! – Tyler

+0

괜찮습니까? 모든 참조 비용이 약간 비쌉니까? 가족 구성원을 더 추가하고 "스미스"가족에 대한 더 많은 언급이 더 많은 메모리를 소비한다는 것을 의미합니까? – Ushwald

+1

@Ushwald : 모든 샌드위치 비용은 5 달러입니다. 그것은 더 많은 샌드위치를 ​​구입하면 더 많은 돈이 들게된다는 것을 의미합니까? –

0

예, 가족에 대한 참조가, 가족에 저장 될 때, 가족의 인스턴스의 크기를 증가 참조를 저장하는 데 필요한 메모리를 사용 참조 크기만큼.

실제로 이것은 Java VM이 사용하는 다양한 메모리 관리 기술 때문에 더 많은 메모리 소비를 의미하지 않는다는 점에 유의하십시오.

관련 문제