2011-12-01 2 views
2

저는 함수가 메모리에 한 번만로드된다는 것을 알고 있습니다. 내 의심은 ... 우리가 클래스의 객체를 생성하여 함수를 어떻게 참조하는지? 객체 생성 및 함수 호출 뒤에있는 것은 무엇입니까? 함수에 대한 객체의 포인터가 있습니까?클래스와 객체에 관한 의문점

+0

[this] (http://www.artima.com/insidejvm/ed2/jvm.html) 또는 다른 많은 것들과 같이 JVM 내부를 덮는 것으로부터 시작하십시오. –

답변

1

나는 당신이 용어 "virtual method table"을 찾고 있다고 생각합니다.

이 기능은 언어 (컴파일러)가 가상 함수를 호출 할 때 (Java의 모든 함수가 가상 인 경우) 실제로 호출 할 메소드를 결정하는 데 사용하는 메커니즘입니다.

1

개체를 만들 때 데이터 필드 만 만들어집니다 (할당 됨). 클래스 메소드는 전체 프로그램 실행 중에 영원히 메모리에 상주합니다.

개체에 메서드에 대한 포인터가 있는지 여부는 언어에 따라 다릅니다. 예를 들어, C++ 객체에는 가상 메소드에 대한 포인터가 포함되어 있고, normal 및 static 메소드는 상수 주소로만 호출됩니다.