首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >滥用Java数组?

滥用Java数组?
EN

Stack Overflow用户
提问于 2022-07-21 17:08:05
回答 2查看 77关注 0票数 -1

我正在开发一个软件包,它大量使用数组(ArrayLists)。要处理的指令被放入要处理的数组队列中,然后在使用时从数组中删除。与绘图相同,数据被放置到数组队列中,数组队列被读取为绘图数据,并且在新数据进入时,最老的数据最终被删除。我们正在谈论成千上万的指令,在一个小时内,在任何时候,可能有200000个点被绘制出来,不断地增长/缩小数组。

过了一段时间,软件就会在处理指令的地方慢下来。至于正在处理的是什么,即系统是稳定的,有多少数据是绘制出来的,处理什么指令,没有什么真正的变化,只是一次又一次地处理类似的输入数据。

变量大小(不是定义的大小,根据需要添加/删除)数组/队列的“滥用”是否存在可能导致最终减速的内存问题?

是否有比字符串ArrayList更好的方法来充当队列?

谢谢!

EN

回答 2

Stack Overflow用户

发布于 2022-07-21 17:36:43

是的,您很可能在工作中使用了错误的数据结构。ArrayList是一个具有支持数组的列表,因此get()是快速的。

Java运行时库有一组非常丰富的数据结构,因此您可以编写得很好,并根据您需要的特性进行调试。您很可能应该使用一个或多个Queue

我的猜测是,您忘记了删除数组中的值,因此JVM必须保留所有这些值。这是内存泄漏。

若要确认,请使用分析器查看内存和cpu的去向。Visualvm是个不错的独立品牌。Netbeans包括一个。

票数 2
EN

Stack Overflow用户

发布于 2022-07-22 16:34:52

VisualVM的使用起到了帮助作用。它显示了一种“消息”形式的大量使用,我正在将传入的数据转储到并忘记存在,因此当惰性变得明显时,它正在处理100万个字符,因为我从未限制它的大小。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73070182

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档