0

我突然使用大量内存分析应用程序,我得到了这个:

sun.java2d.loops.ProcessPath$Point

因为被分配了近 11.000.000 次。

它是什么,有解决办法吗?

4

2 回答 2

2

我最初的反应是质疑这是否实际上使用了大量的内存/CPU 周期?这些sun.包是 Sun 的 JVM 的内部实现,因此它们很可能是您的代码正在做什么的低级细节。如果这些对象占用了大量内存,这可能是个问题,但仅仅看到 1100 万次分配并不表明有任何异常。

编辑:一点谷歌搜索似乎表明这是一个用于编码对 2D 平面上特定点的引用的对象。很有可能,如果您正在做任何涉及图形的事情,那么是的,您会生成大量的图形。此外,每个只存储两个整数(x 和 y 坐标)和一个布尔值,因此它们在总体方案中将是非常小的对象。即使这 1100 万个分配中没有一个被垃圾回收(而且我预计大多数是局部变量,所以会很快被回收),那么它们也不会占堆的很大一部分,除非你是在具有少量 RAM 的设备上运行。

换句话说,在别处寻找你的问题。查看占用大量当前堆空间的对象可能会更有帮助,甚至查看当前引用的对象数量,以便找到您的泄漏。阅读有关如何使用您选择的工具查找和消除内存泄漏的指南的文档。查看总分配很少有用,除非您知道给定的类应该有多少(例如,检查单例是否只创建一次可能会很好)。

于 2009-01-19T11:25:28.347 回答
0

我解决了内存问题。我正在做一些讨厌的参考处理我的代码中的一些地方。

于 2009-01-19T12:04:41.793 回答