728x90
자바에는 reflection 패키지를 이용해 JVM에 로딩되어져 있는 클래스와 메서드의 정보를 알 수 있습니다.
Class 클래스
- 클래스에 대한 정보를 얻을 때 사용하기 좋고 생성자는 따로 존재하지 않습니다.
- 주로 Object클래스의 getClass()를 사용해 가져옵니다.
- 각 메서드를 통해 클래스, 필드, 메서드, 생성자 와 같은 정보를 가져올 수 있습니다.
Method 클래스
- 메서드에 대한 정보를 얻을 수 있고 생성자가 따로 없어 Method클래스의 정보를 얻기 위해서 Class클래스의 메서드를 사용해야합니다.
- Method클래스의 각 메서드를 통해 메서드의 이름, 매개변수, 리턴 타입 등에 대한 정보를 가져올 수 있습니다.
Field 클래스
- 클래스에 있는 변수들의 정보를 제공하기 위해 사용됩니다.
- 생성자가 존재 하지 않으므로 Class클래스의 메서드를 사용해야합니다.
- 각 메서드를 통해 변수에 대한 정보를 가져올 수 있습니다.
getCalss()의 경우 Class 객체를 만들고 해당 객체의 이름을 가져옵니다.
단순히 클래스를 비교할 때는 getClass()를 호출하여 비교하는 것 보다 instanceof를 사용하는 것이 성능면에서 더 좋습니다.
또한 클래스의 메타 데이터 정보는 JVM의 Perm 영역에 저장됩니다. 많은 클래스를 Class 클래스를 이용해 동적 생성할 경우 Perm영역이 더이상 사용하지 못하게 되어 OutOfMemoryError가 발생할 수도 있습니다.
'학습(구) > Java(구)' 카테고리의 다른 글
자바 성능 튜닝 - I/O에서 발생하는 병목 현상 (0) | 2021.06.07 |
---|---|
자바 성능 튜닝 - Synchronized (0) | 2021.06.05 |
자바 성능 튜닝 - static (0) | 2021.06.04 |
자바 성능 튜닝 - 조건/반복문 (0) | 2021.06.04 |
자바 성능 튜닝 - 컬렉션 (0) | 2021.05.07 |