我想知道是否有可能调整JavaMe中垃圾回收器的工作方式,以改善性能(可能减少传递次数)?我看过一些相关文章,但它们大多是针对Java SE的,并且大多数文章都说GC高度依赖制造商。那会有多少影响呢?
谢谢大家的反馈。我已经发现对于支持Java Me的设备,调整GC是不可能的。至少没有任何简单或有用的方法。无论如何,我还是会保持这个问题的开放状态,以防这种情况在未来某个时候发生改变。 :)
当垃圾收集器被触发时,除非您首先了解正在运行应用程序的特定VM是如何实现的,以及它是如何配置和定制的,以适用于您正在使用的特定手机,否则这很大程度上是一个谜。
调用java.lang.System.gc()并不保证垃圾收集器会被触发。它通常只是增加了VM很快启动垃圾收集的概率。
我发现在同一个线程中从3个不同的方法中连续调用System.gc()通常效果不错。
有许多方法可以解决JavaME标准API实现中的不足,以减少产生的垃圾量:
扩展ByteArrayOutputStream,以便在访问数据时不创建字节数组的副本。
避免调用StringBuffer.getChars()和StringBuffer.toString()。改用StringBuffer偏移量和长度来编写代码。
把本地缓冲区(byte[], StringBufferUnfortunately, you did not provide the text that needs to be translated into Chinese. Please provide the text so I can assist you better.)转化为实例或静态变量(并用synchronized保护它们)。显然这样做有一定的开销,但它可以防止应用程序因过于频繁进行垃圾回收而冻结。
扩展StringBuffer以避免在String和StringBuffer之间来回切换:实现append(String,offset,length),parseInt(int),indexOf(String,index),replace(offset,StringBuffer,offset,length)Unfortunately, you did not provide the text that needs to be translated into Chinese. Please provide the text so I can assist you better.
Unfortunately, you did not provide the text that needs to be translated into Chinese. Please provide the text so I can assist you better.
我看不到任何可能的方法来调整J2ME中的垃圾回收行为。
如果您遇到由于垃圾收集引起的暂停问题,您需要做两件事情:
- Reduce the garbage that your program produces, by re-using objects, and avoid costly things like string concatenations (use StringBuffer instead)
- Use System.gc() to force garbage collection when a little freeze doesn t matter (for example, during the "loading" screen of a game), to reduce the odds that the collector process is triggered when it s annoying.
- winforms
- combobox
- fogbugz
- java
- date
- internationalization
- asp.net
- iis
- url-rewriting
- urlrewriter
- c#
- enums
- ocaml
- haxe
- algorithm
- string
- viewstate
- .net
- c++
- c
- symbol-table
- mysql
- database
- postgresql
- licensing
- migration
- vb.net
- vb6
- declaration
- vb6-migration
- python
- psycopg2
- backup
- vmware
- virtualization
- gnu-screen
- authentication
- desktop
- excel
- xll
- cultureinfo
- regioninfo
- oracle
- client
- session
- download
- html
- virtual
- constructor
- scenarios
- perl
- full-text-search
- javascript
- ajax
- testing
- oop
- inheritance
- vim
- encapsulation
- information-hiding