首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >堆的大小在旋转后增加?

堆的大小在旋转后增加?
EN

Stack Overflow用户
提问于 2014-12-23 07:56:05
回答 1查看 243关注 0票数 0

我注意到,在“满载”(我的最高内存消耗模式)下,我使用了近93%的内存。

我的第一个问题,,我用了很多绘图,相对较小。我用一个LRUCache缓存它们,如果不再需要什么东西,我当然会释放LRUCache。93%的人是从一开始就被分配了那么多内存,还是堆的正常行为?

旋转之后,我注意到堆在增加,从逻辑上讲,我的内存消耗(Percantage)正在减少。

第二个问题

这一切为什么要发生?我所做的几乎完全一样,我只使用一点点记忆。

启动后的

一次旋转后的

通知

我没有内存泄漏,至少没有一个大到我能注意到。堆消耗总是在2-4%的范围内波动.

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-23 08:41:57

当您旋转图像时,底层软件可能会使用旋转矩阵为您完成此操作。这是一段时间内必须放入堆中的额外内存量。但是,如果堆中没有足够的连续空间,JVM将增加堆大小以适应额外的数据。当所有对该数据的引用丢失时,GC将悄悄地释放此内存,但堆大小将保持不变,以供以后使用。这是因为使用操作系统已经分配的内存通常更快,然后释放内存页并每隔一段时间从OS请求新的内存。实际上,Java有指示何时减少堆大小的启发式方法,例如,在一段时间之后,当大部分堆不被使用时。

这里您可以找到一些控制(Oracle) Java启发式的选项。我相信其中一些也适用于。

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

https://stackoverflow.com/questions/27616237

复制
相关文章

相似问题

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