我已经搜索过这个,但似乎无法找到一个直接的答案。
基本上我有一些代码可以创建一个数组的副本(Arrays.copyOf
用于创建int[]
),它会做一些工作并输出结果或将结果发送Arrays.copyOf
到队列以进行进一步处理。
如果我更改结果副本,我的结果不再正确,所以我认为我需要它,但我想知道完成后是否有什么可以做的,因为根据我的内存分析,它占用了我所有的内存和垃圾收集有帮助,但是它只是再次建立起来。我真的不确定这是否会有所帮助,但我想测试一下,如果我int[]
在将其提交到队列后以某种方式将其删除,那么我的程序是否能像使用更小的内存占用一样运行。
我是 Java 新手,所以如果这个逻辑完全有缺陷,还有其他方法可以达到相同的结果吗?底线是我正在创建一个新数组,它被使用了一点,但在不再需要时徘徊(它占用了我最大内存的 15G,然后我相信垃圾收集器会进来并减少它,但它会在几个秒)。也许我可以将变量设置为 null 或者一旦我确定它不需要它(我正在复制的对象非常大)?
这里有一些代码只是为了说明我的意思(它有点蹩脚,但希望它能让你理解它在代码中的设置,所有这些都在多线程可调用中):
while(!queue.isEmpty()) {
int[] data_list = Arrays.copyOf(current.list, current.list.length);
if (things work) {
Sysout("print results");
} else if (current.k > 0) {
queue.add(new Queue(data_list));
}
}
}