이 질문은 .NET에 관한 것이지만 일반적으로 적용되는 것 같습니다. 새 객체가 인스턴스화되면 해당 객체의 함수에도 메모리가 할당됩니까? 그들이 나중 시점까지 부름을받지 않더라도?개체의 기능 및 속성에 별도의 메모리가 할당 되었습니까?
다르게 말하면 동일한 멤버 변수를 가진 두 개의 클래스가 있지만 그 안에 더 많은 메서드가있는 클래스는 인스턴스화시 더 많은 메모리를 차지합니까?
이 질문은 .NET에 관한 것이지만 일반적으로 적용되는 것 같습니다. 새 객체가 인스턴스화되면 해당 객체의 함수에도 메모리가 할당됩니까? 그들이 나중 시점까지 부름을받지 않더라도?개체의 기능 및 속성에 별도의 메모리가 할당 되었습니까?
다르게 말하면 동일한 멤버 변수를 가진 두 개의 클래스가 있지만 그 안에 더 많은 메서드가있는 클래스는 인스턴스화시 더 많은 메모리를 차지합니까?
개체 인스턴스은 할당 한 인스턴스의 상태를 나타냅니다. 따라서 내부에 정의한 모든 필드 및 속성의 복사본이 에 해당합니다.
주어진 형식에 대해 정의하는 메서드는 이라는 인스턴스 자체에서 다른 데이터 구조로 유지됩니다. 메서드 표. 할당 한 모든 단일 인스턴스는 해당 유형의 메서드 테이블을 가리키는 포인터가 있습니다.
당신이 방법에 함수를 호출
, 그것은 메모리에 모든 인수가 가능한 스택에 주소의 포인터를 필요한 양, 당기 기능, 푸시를 이동하고, 함수를 호출합니다. 이것에더 여기서 읽을 수는 인스턴스화시에 더 많은 메모리를 차지하는 내부 이상의 방법으로 Drill Into .NET Framework Internals to See How the CLR Creates Runtime Objects
링크에는 잡지 목록 만 있습니다. –
위의 링크가 작동하지 않습니다. 웹에서 검색 한 후 여기에서 찾았습니다. 도움이되기를 바랍니다. http://blog.csdn.net/phiger/article/details/5566988 – Civa
메모리는뿐만 아니라 방법이다 (인스턴스)의 속성에 할당되는 객체 생성의 정확한 세부 사항을 확인할 수 있습니다. 메서드의 메타 데이터와 코드는 아주 작은 메모리 조각으로 할당됩니다.
동일한 멤버 변수하지만 하나?
아니요. 인스턴스에 필요한 공간은 필드에만 의존합니다.
이 메서드는 메모리도 필요하지만 클래스 당 한 번만 필요합니다. 정적 필드와 같습니다. 그 메모리는 클래스가로드 될 때 할당됩니다.
분명히 각 인스턴스의 멤버 변수는 값이 다르므로 다른 스토리지가 있어야합니다. 맞습니까? 각 인스턴스의 기능이 다를 것이라고 생각하십니까? 그렇다면 왜? – Gabe
함수가 메모리를 할당하는시기는 명확하지 않습니다. 객체 인스턴스화시 또는 호출시? – bytefire