2021.03.12

“자바 객체 헤더 줄인다”··· 새 오픈JDK 프로젝트 제안 

Paul Krill | InfoWorld
자바 객체 헤더를 절반 이상 축소하는 것을 목표로 하는 새로운 개발 제안이 오픈JKD 오픈소스 자바 커뮤니티에서 제기됐다. 제안서에 따르면 이를 통해 모든 자바 워크로드에서 메모리 및 CPU 사용량을 줄일 수 있다. 
 
ⓒGetty Images

지난 3월 9일(현지 시각) 게시된 새 개발 제안은 자바가 더 작은 객체 헤더를 얻을 수 있고 따라서 메모리 사용량을 개선할 수 있다는 게 주요 내용이다. 

‘프로젝트 릴리퍼트(Project Lilliput)’로 명명된 이 개발 제안을 올린 레드햇(RedHat)의 수석 소프트웨어 엔지니어 로만 켄케는 객체 헤더를 64bit로 줄이는 방법을 모색하고자 한다고 밝혔다. 

현재 64bit 핫스팟(HotSpot) VM에서 자바 객체는 128bit 객체 헤더, 64bit 다목적 헤더 단어, 64bit 클래스 포인터를 갖는다. 켄케는 평균 객체 크기가 5~6단어인 경우 현재 객체 헤더 크기가 중요하다고 설명한다.

헤더 크기를 축소하면 메모리 압박이 크게 감소돼 대규모 인-메모리 데이터베이스이든 아니면 작은 컨테이너화된 애플리케이션이든 상관없이 모든 자바 워크로드에서 전체 CPU 및 메모리 사용량을 줄일 수 있기 때문이다.

해당 제안서에서 언급한 프로젝트 릴리퍼트의 구체적인 이점은 다음과 같다. 

• 힙(heap) 사용량 감소 
• 더 높은 객체 할당 비율 
• 가비지 수집 활동 감소
• 객체 패킹 강화


프로젝트 릴리퍼트의 또 다른 목표는 헤더 레이아웃을 더 유연하게 만드는 것, 그리고 비트(bit) 사용 방법에 관한 빌드 타임(또는 런타임) 구성을 허용하는 것이다. 이 밖에 객체 헤더를 64bit로 줄이는 것에서 나아가 32bit로 줄이는 것도 추가적인 목표라고 그는 전했다. 

한편 켄케는 객체 헤더가 객체의 잠금 상태를 표시하고, 가비지 컬렉션에서 각 객체의 살아남은 횟수(Age)를 추적하며, ID 해시코드 및 유형 정보를 저장하는 등의 목적으로 사용(및 오버로드)됐다고 말했다. 

또한 헤더 필드 할당 및 축소를 위해 연구해야 할 여러 기술이 인용됐다. 이를테면 포인터 압축이나 컴파일 타임으로 알려진 필드 백필링 등이다. 
 
지원되는 플랫폼 간에 어셈블리를 변경해야 하는 것과 같은 몇 가지 제약도 있다고 그는 밝혔다. 이어서 자바와 C/C++를 연결하는 파나마(Panama), 동시 애플리케이션 복잡성을 줄이는 룸(Loom), 느린 시작 속도 등의 자바 문제를 해결하는 라이덴(Leyden)과 같은 다른 자바 프로젝트와의 상호작용도 또 다른 제약이라고 켄케는 덧붙였다. 

해당 제안서에 따르면 가능한 한 빠르게 브레인스토밍, 아이디어 수집, 개념증명(PoC)을 고안하는 것부터 시작해 프로젝트 릴리퍼트의 초기 작업을 진행할 계획이다. ciokr@idg.co.kr
 



2021.03.12

“자바 객체 헤더 줄인다”··· 새 오픈JDK 프로젝트 제안 

Paul Krill | InfoWorld
자바 객체 헤더를 절반 이상 축소하는 것을 목표로 하는 새로운 개발 제안이 오픈JKD 오픈소스 자바 커뮤니티에서 제기됐다. 제안서에 따르면 이를 통해 모든 자바 워크로드에서 메모리 및 CPU 사용량을 줄일 수 있다. 
 
ⓒGetty Images

지난 3월 9일(현지 시각) 게시된 새 개발 제안은 자바가 더 작은 객체 헤더를 얻을 수 있고 따라서 메모리 사용량을 개선할 수 있다는 게 주요 내용이다. 

‘프로젝트 릴리퍼트(Project Lilliput)’로 명명된 이 개발 제안을 올린 레드햇(RedHat)의 수석 소프트웨어 엔지니어 로만 켄케는 객체 헤더를 64bit로 줄이는 방법을 모색하고자 한다고 밝혔다. 

현재 64bit 핫스팟(HotSpot) VM에서 자바 객체는 128bit 객체 헤더, 64bit 다목적 헤더 단어, 64bit 클래스 포인터를 갖는다. 켄케는 평균 객체 크기가 5~6단어인 경우 현재 객체 헤더 크기가 중요하다고 설명한다.

헤더 크기를 축소하면 메모리 압박이 크게 감소돼 대규모 인-메모리 데이터베이스이든 아니면 작은 컨테이너화된 애플리케이션이든 상관없이 모든 자바 워크로드에서 전체 CPU 및 메모리 사용량을 줄일 수 있기 때문이다.

해당 제안서에서 언급한 프로젝트 릴리퍼트의 구체적인 이점은 다음과 같다. 

• 힙(heap) 사용량 감소 
• 더 높은 객체 할당 비율 
• 가비지 수집 활동 감소
• 객체 패킹 강화


프로젝트 릴리퍼트의 또 다른 목표는 헤더 레이아웃을 더 유연하게 만드는 것, 그리고 비트(bit) 사용 방법에 관한 빌드 타임(또는 런타임) 구성을 허용하는 것이다. 이 밖에 객체 헤더를 64bit로 줄이는 것에서 나아가 32bit로 줄이는 것도 추가적인 목표라고 그는 전했다. 

한편 켄케는 객체 헤더가 객체의 잠금 상태를 표시하고, 가비지 컬렉션에서 각 객체의 살아남은 횟수(Age)를 추적하며, ID 해시코드 및 유형 정보를 저장하는 등의 목적으로 사용(및 오버로드)됐다고 말했다. 

또한 헤더 필드 할당 및 축소를 위해 연구해야 할 여러 기술이 인용됐다. 이를테면 포인터 압축이나 컴파일 타임으로 알려진 필드 백필링 등이다. 
 
지원되는 플랫폼 간에 어셈블리를 변경해야 하는 것과 같은 몇 가지 제약도 있다고 그는 밝혔다. 이어서 자바와 C/C++를 연결하는 파나마(Panama), 동시 애플리케이션 복잡성을 줄이는 룸(Loom), 느린 시작 속도 등의 자바 문제를 해결하는 라이덴(Leyden)과 같은 다른 자바 프로젝트와의 상호작용도 또 다른 제약이라고 켄케는 덧붙였다. 

해당 제안서에 따르면 가능한 한 빠르게 브레인스토밍, 아이디어 수집, 개념증명(PoC)을 고안하는 것부터 시작해 프로젝트 릴리퍼트의 초기 작업을 진행할 계획이다. ciokr@idg.co.kr
 

X