2010-12-09 4 views
5

jvm을 자세한 정보 표시 모드로 실행할 때 아래에 표시된 것처럼 파일이 공유 객체 파일에서로드 중임을 나타냅니다.공유 오브젝트 파일은 무엇입니까?

[Loaded java.lang.Object from shared objects file] 
[Loaded java.io.Serializable from shared objects file] 
[Loaded java.lang.Comparable from shared objects file] 
[Loaded java.lang.CharSequence from shared objects file] 

이 공유 객체 파일은 무엇입니까? 나는 이것이 rt.jar에있는 파일이고 거기에서로드되고 있다고 생각했다. 하지만 rt.jar은 xtx23

[Loaded java.security.BasicPermissionCollection from shared objects file] 
[Opened C:\Program Files\Java\jre6\lib\rt.jar] 
[Loaded sun.misc.JavaSecurityProtectionDomainAccess from C:\Program Files\Java\jre6\lib\rt.jar] 
[Loaded java.security.ProtectionDomain$2 from C:\Program Files\Java\jre6\lib\rt.jar] 

rt.jar을 압축 해제 한 후 어떤 방식 으로든 열어서 공유 오브젝트 파일에서로드 된 모든 클래스를 가지고 있다는 것을 알았습니다.

답변

5

이것은 클래스 데이터 공유입니다. Sun/Oracle 클라이언트 HotSpot 및 공유 사용 (기본값 인 -Xshare:auto 또는 -Xshare:on)을 실행하는 경우 classes.jsa 파일이 메모리 맵핑됩니다. 이 파일은 실행중인 시스템의 정확한 구성에 적합한 내부 표현으로 여러 클래스 (classlist 파일에 나열)를 포함합니다. 그 아이디어는 클래스를 빠르게로드하여 JVM을 더 빨리 가져올 수 있다는 것입니다. 곧 적용되지 않는 클래스가 공격 받게 될 것이므로 rt.jar을 열어야하고 필요에 따라 클래스를 기존에로드해야합니다.

참조 :

+0

이 대답은 약간의 소스를 인용해야 할 수도 있습니다 .... – Pacerier

+0

은 인용을 추가 부담 @Pacerier. –

관련 문제