首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Swing应用程序中实现堆溢出

在Swing应用程序中实现堆溢出
EN

Stack Overflow用户
提问于 2012-12-20 07:27:20
回答 1查看 159关注 0票数 1

我正在用java swing开发一个涂鸦式的应用程序。它正处于初级阶段,如图所示。

我已经实现了撤销功能,它取消了最后一次绘制的笔画。撤消功能可以升级到最大定义的撤消级别。

撤消功能的工作方式是在Image array中每一次笔画之后复制绘图画布的内容。这个数组的作用就像一个First-In-Last-Out堆栈。单击undo时,堆栈为poped,并在屏幕上绘制所获得的图像。

现在我面临的问题是,当前的撤销实现方法占用了太多的内存。在撤消级别为20时,几乎70-80 MB内存耗尽,而在30级时,会发生堆溢出。

是否有更好的方法来实现撤销功能?谢谢。

编辑:我发现了一些有用的信息-- 这里,这可能会有帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-12-20 07:32:32

您需要以不同的方式表示绘图中的步骤。在当前使用的方法中,每次重新将画布保存为未压缩的图片--即内存--是贪婪的。

尝试重构您的代码,以便只将画布上绘制的笔画保存到堆栈中。在呈现图片时,这会增加一些开销(每次发生更改时,都需要重新绘制整个画布),但是Java就是针对这个问题而设计的。

由于只保存了形状,所以内存需求应该会显著减少。使用Shape类来表示画布上的笔画。

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

https://stackoverflow.com/questions/13967185

复制
相关文章

相似问题

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