我一直在编写一个要部署在浏览器中的 Java swing 小程序(对于小程序来说,ios 是很正常的,当然)。它使用 Java 2D
无论如何,我有一个用于开发目的的测试工具,它作为桌面应用程序运行。
基于完全相同的测试数据,Test Harness 版本的堆总大小为 18 Meg;这是基于在 Java 2D 画布上绘制大约 7000 个对象,大概有 30,000 个坐标对,加上其他零碎,因此 18 Meg 堆很大,但几乎可以理解。应用程序总大小为 40 兆。
现在我通过 IBM Websphere 运行与 Applet 完全相同的代码。
插件的内存增量上升到大约 160Meg!不知何故,相同的 java 代码正在设法使用 10 倍的内存。
我的老 CBM64 程序员对第一个数字并没有特别印象 - 它是一个数量级的 IMO 臃肿,但第二个是惊人的 - 有人知道什么可能会使用这么多内存吗?我正在使用 VisualVM,它有助于将 Object、char[] 和 String 之类的东西作为内存猪,我的课程都没有接近。
有趣的是,Float 和 Double 似乎占用了完全相同的内存量(每个 16 字节)。
我现在的主要猜测是使用 SOAP 进行数据检索导致内存使用量激增,并且由于未知的原因,SOAP XML 被保留而不是 GC'd。
还有其他人知道这里发生了什么吗?