2016-12-31 7 views
1

나는 힙 메모리가 어떻게 작동하는지 혼란스러워. 32GB 램을 가진 서버와 약 1TB 크기의 키 - 값 매핑 데이터 세트가 있습니다. 나는 디스크에서 대부분 읽어야 할이 1TB 데이터 세트에 따라 값에 키를 매핑 할 수있는 간단하고 빠른 임베디드 Java 데이터베이스를 찾고있다. 이 데이터 세트의 각 항목은 작기 때문에 (< 500 바이트) 파일 시스템을 사용하는 것이 좋지 않을 것이라고 생각합니다.메모리보다 큰 데이터를 크로니클 맵핑 할 수 있습니까?

나는 이것을 위해 크로니클 맵을 사용하고 싶습니다. 나는 힙 메모리 사용량이 RAM 크기를 초과 할 수 있으며 파일 시스템과 어떻게 든 상호 작용하지만 크로니클 맵은 메모리 데이터베이스로 설명됩니다. Chronicle Map은 내 서버의 1TB 데이터 세트를 처리 할 수 ​​있습니까, 아니면 32GB 이하의 데이터 세트 만 사용할 수 있습니까?

답변

3

대답은 운영 체제에 따라 다릅니다. Windows에서는 Chronicle Map이 주 메모리에 들어 있어야하지만 Linux와 MacOSX에서는 주 메모리에 수정 사항이 없습니다 (차이점은 이러한 OS에서 메모리 매핑이 구현되는 방법입니다). 참고 : Linux를 사용하면 디스크 공간 (MacOSX 및 Windows는 지원하지 않음)

Linux에서는 32GB 메모리가있는 컴퓨터에서 1TB 또는 100TB를 매핑 할 수 있습니다. 액세스 패턴과 드라이브 선택은 성능 향상에 중요 할 것임을 기억하는 것이 중요합니다. 일반적으로 대부분의 시간에 동일한 데이터에 액세스하고 SSD를 사용하면이 작업이 잘 수행됩니다. 디스크 회전 및 임의 액세스 패턴이있는 경우 드라이브 속도에 따라 제한됩니다.

참고 : Chronicle Map은 25 억 개의 항목으로 테스트되었으며 64 비트 해시 키를 사용하므로 잘 수행됩니다.

+0

25 억 개의 항목이있는지도에 대해 'ChronicleMap.size()'가 반환하는 것은 무엇입니까? 그것은 21 억 5 천만 달러의 최대 int 값에서 차단됩니까? –