我想知道是否可以调整垃圾收集器在 JavaMe 上的工作方式,以某种方式提高性能(可能会减少段落数量)?我看过一些关于它的文章,但大多是针对 Java SE 的,其中大多数都说 GC 高度依赖于制造商。那会是多少呢。
垃圾收集器何时被触发在很大程度上是一个谜,除非您有第一手资料了解您的应用程序运行的特定虚拟机是如何实现的,以及它是如何针对您使用的特定手机进行配置和定制的。
调用 java.lang.System.gc() 并不能保证垃圾收集器被触发。它通常只会增加虚拟机很快启动垃圾收集的可能性。
我发现在同一个线程中通过 3 个不同的方法连续调用 System.gc() 3 次往往效果相当好。
有很多方法可以解决 JavaME 标准 API 实现中的低效问题,以减少生成的垃圾量:
扩展 ByteArrayOutputStream,这样当您想要访问数据时就不会创建字节数组的副本。
避免调用 StringBuffer.getChars() 和 StringBuffer.toString()。让您的代码使用 StringBuffer 偏移量和长度。
将本地缓冲区(byte[]、StringBuffer...)转换为实例或静态变量(并使用同步保护它们)。显然,这样做会产生开销,但它可以防止您的应用程序由于垃圾收集过于频繁而冻结。
扩展 StringBuffer 以避免在 String 和 StringBuffer 之间来回切换:实现append(String, offset, length)、parseInt(int)、indexOf(String, index)、replace(offset, StringBuffer, offset, length)...
...
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)