gpt4 book ai didi

java - 如何使用低内存系统实现 ArrayList,其中内存块以小块形式可用,但大块序列不可用

转载 作者:行者123 更新时间:2023-11-30 06:35:05 25 4
gpt4 key购买 nike

我已经编写了自己的 ArrayList 实现,例如

    ArrayList<T>
{
int capacity;
int[] element_array;
int size();
boolean insert();
boolean insertAtIndex();
boolean remove(int element);
boolean removeAtIndex(int index,int element);
resize();
// when capacity is filled 75% ,
//create a new array with double size and relocate all element from existing array to new array
}

我的调整大小实现创建了一个双倍大小的新数组。现在,如果我正在处理小型内存系统,很可能内存已分配给多个对象,并且需要将我的数组加倍。由于系统内存不足,内存可能仍可用于创建一百万大小的数组,但无法分配顺序内存。

遇到这种情况我该如何处理?

这是一个假设的场景,但仍然想处理它。请提出建议/指南。

或者我是否遗漏了数组内存分配的某些内容?

最佳答案

因此,垃圾收集器有两个任务:

快速释放未引用的内存以满足应用程序的分配率,从而不会耗尽内存。回收内存,同时尽量减少对正在运行的应用程序的性能(例如延迟和吞吐量)的影响。

根据垃圾收集器的概念使用回收技术

例如

  • 追踪收集者
  • 标记-清除集合
  • 复制集合
  • 增量收集
  • 保守的垃圾收集
  • 引用计数

要整理顺序内存,请使用上述技术,而不是使用 TLAB(线程本地缓冲区分配),因为 TLAB 存在通过堆碎片导致内存效率低下的风险。

要获得更多说明,请彻底使用给定的链接

http://www.javaworld.com/article/2078645/java-se/jvm-performance-optimization-part-3-garbage-collection.html

关于java - 如何使用低内存系统实现 ArrayList,其中内存块以小块形式可用,但大块序列不可用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45339994/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com