Java 和内存管理

标签 java c++ memory-management

我是 Java 世界的新手,有 C++ 背景。我想将一些 C++ 代码移植到 Java。 代码使用稀疏 vector :

struct Feature{
int index;
double value;
};

typedef std::vector<Feature> featvec_t;

据我了解,如果创建一个对象,内存使用会产生一些开销。 因此,当一组 featvec_t 中有 10 到 1 亿个特征时,特征的简单实现将产生巨大的开销。

如何在 Java 中有效地表示这种结构内存?

最佳答案

如果内存确实是您的瓶颈,请尝试将您的数据存储在两个单独的数组中: int[] 索引double[] 值

但在大多数情况下,对于如此大的结构,性能(时间)将是主要问题。根据主要对数据执行的操作(插入、删除、获取等),您需要选择合适的数据结构来存储类 Feature 的对象。 使用 java.util.Collection 开始您的探索接口(interface)、其子接口(interface)(List、Set 等)及其实现在 java.util 包中提供。

关于Java 和内存管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2048155/

相关文章:

java - 从 ArrayList HashMap<String, String> 中的键/值中检索值

Java 8 Stream - 标记 "("出现语法错误,此标记后应有表达式

java - 如何从变量设置 jspinner 最大值?

Swift - 在基于闭包的配置中避免强引用循环

javascript - 多个实例与具有动态内容的一个实例

java - oracle 11g数据库和java 1.5问题

c++ - 如何使用性能计数器控制从文件中读取?

c++ - 是否可以使用模板参数的所有组合生成类型?

c++ - 生成下一个最大或最小的可表示 float ,无需位旋转

java - 将全局静态变量声明为 null 是一个好习惯吗?