【发布时间】:2013-08-23 07:23:30
【问题描述】:
我想分配一个原始数据类型对象的数组列表,如 int、char 等(不是数组,因为它将来会增长可能不是线性的),但需要存储在 RAM 中的连续内存位置(jvm 托管堆)。但是自从我为 ex 的原始数据类型声明 ArrayList 时。 ArrayList 为 int,内部 jvm 映射到 ArrayList
现在的问题是 ArrayList 持有对存储在 jvm 管理的内存空间中不同位置的对象的连续引用。但我最初的想法是连续存储实际数据对象而不仅仅是参考!但我不知道如何实现它?
我能想到的一个解决方案是分配大尺寸字节数组,从而创建一个连续的内存缓冲存储!如果有 1000 个 int 对象存储在 2000 个预分配字节中,开发人员需要管理如何在 101 个索引位置获取一些存储在这个手动创建的缓冲区(假设我们建模为 2 个字节/int)中的 int 数据!
复杂数据类型也需要相同的功能。虽然在处理复杂对象的连续内存分配时可能会很困难,因为需要计算结构大小并预分配 (structureSize * No. of Elements Expected) 的字节缓冲区
对于连续分配对象(原始/复杂>),我想不出任何其他有效的方法或解决方案。谁能帮助我?
【问题讨论】:
-
您正在尝试解决一个不存在的问题。为什么您认为当前的 Java 内存模型效率低下,而您可以做得更好?
-
宝藏是我想检查的东西!谢谢:)
标签: java arraylist jvm bytebuffer primitive-types