- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想知道是否可以调整垃圾收集器在 JavaMe 上的工作方式,以便以某种方式提高性能(可能会减少 channel 数)?我看过一些关于它的文章,但大多是针对 Java SE 的,其中大多数都说 GC 高度依赖于制造商。那将是多少。
最佳答案
垃圾收集器何时被触发在很大程度上是一个谜,除非您对运行您的应用程序的特定 VM 是如何实现的以及它是如何针对您使用的特定手机进行配置和定制的第一手知识。
调用 java.lang.System.gc() 并不能保证触发垃圾收集器。它通常只会增加 VM 很快启动垃圾收集的可能性。
我发现在同一线程中从 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 )...
...
关于performance - 是否可以更改 Java ME 中的垃圾收集行为?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/324398/
我是一名优秀的程序员,十分优秀!