Проблема Multimap Space: Guava

В моем Java-коде я использую Multimap Guava ( com.google.common.collect.Multimap), используя это:

 Multimap Index = HashMultimap.create()

Вот, Multimap ключ — это некоторая часть URL-адреса, а значение — это другая часть URL-адреса (преобразованная в целое число). Теперь я назначаю своей JVM 2560 МБ (2,5 ГБ) пространства кучи (используя Xmx и Xms). Однако он может хранить только 9 миллионов таких пар (ключ, значение) целых чисел (около 10 миллионов). Но теоретически (согласно памяти, занимаемой int) он должен хранить больше.

Кто-нибудь может мне помочь,

  1. Почему Multimapиспользует много памяти? Я проверил свой код, и без вставки пар в Multimapон использует только 1/2 МБ памяти.
  2. 2.

Есть ли другой способ или самодельное решение для решения этой проблемы с памятью? Значит, есть ли способ уменьшить эти накладные расходы на объекты, поскольку я хочу хранить только int-int? На любом другом языке? Или любое другое решение (предпочтительно домашнее) для решения проблемы, с которой я столкнулся, означает решение на основе БД или что-то в этом роде.

9
задан Arpssss 30 March 2012 в 14:11
поделиться