【发布时间】:2013-08-14 06:03:54
【问题描述】:
我想在 DirectByteBuffer 中存储一个哈希映射(最多 1,000,000,000 个条目),我需要在其中读取和写入条目。 hashmap 将有一个字符串键和可序列化的对象。但是,如果将哈希映射作为一个整体序列化并将其存储为 Byte Buffer ,则每次我需要反序列化它都会导致堆内存出现问题。有没有其他方法可以将键值存储在 DirectByteBuffer 中,搜索键并以优化的方式检索值? PS:我需要一个 incache 解决方案,并且我需要从 java 堆中释放对象(这将是我的 hashmap 中的值),因为它们的数量很大。
【问题讨论】:
-
为什么你试图将它存储在 ByteBuffer 中?请提供更多背景信息。
-
它的一些元数据应该在应用程序中随时可用。我不能把它放在数据库中。这也应该远离 GC。
-
好吧,考虑到进入字节缓冲区的内容是只是字节,这不会阻止任何东西被 GC'd。为什么元数据不能通过哈希映射获得?
-
我提到了 DirectByteBuffer,它将使用物理内存而不是堆内存...
-
不,我仍然看不出有任何理由在这里使用 DirectByteBuffer。一个简单的法线贴图似乎要简单得多,而且您还没有清楚地解释为什么这对您不起作用。请围绕您认为这是一个问题的原因编辑您的问题(而不仅仅是添加 cmets),也许其他人可以帮助您。
标签: java bytebuffer