2014-11-05 2 views
3

하나의 앱에서 생성되어 다른 앱에서 사용되는 스칼라 해시 맵이 있습니다. 해시 맵은 크기가 100MB 이상인 것처럼 크다.HashMap 값을 스칼라로 별도 저장하는 방법은 무엇입니까?

var actMap = new collection.mutable.HashMap[String, Seq[Object]]; 
이 starts.I 그냥 메모리에 키를로드하려고 할 때 현재 전체지도가 두 번째 응용 프로그램에 의해 메모리에로드되는

맵에서 키를 찾을 때 나중에,이 값을 제공해야 디스크에 저장됩니다. 이것을 달성하기 위해 어쨌든 있습니까? 표준 직렬화를 사용하면 개별 값을 개별적으로 저장하고 즉시 액세스 할 수 있습니다. 대안은 무엇입니까?

+0

볼 수 있었다 당신이 약간 인터페이스를 변경하고 제 3의 라이브러리를 사용할 수 있습니다 가정? –

+0

해시 맵은 룩업 테이블처럼 여기에 사용됩니다. 한 번에 100-200 키가 맵에서 최대 값으로 검색됩니다. – Balaram26

답변

3

메모리 매핑 된 파일을 사용하는 것이 좋습니다. 너 자신을 굴릴 수있어.

두 번째 응용 프로그램에 의해 검사됩니다 값의 몇 퍼센트

http://software.clapper.org/javautil/api/org/clapper/util/misc/FileHashMap.html

https://github.com/bmc/javautil/blob/master/src/main/java/org/clapper/util/misc/FileHashMap.java

+0

답장을 보내 주셔서 감사합니다. FileHashMap을 시도해 보았습니다. 즉, HashMap을 채우는 동안 속도가 느리기 때문에 파일이 생성됩니다. 크기가 500MB 정도입니다. – Balaram26

관련 문제