我有一个基于 Web 2.0 技术的应用程序——基本上我使用 phonegap / Titan 方法来启动一个 Web 浏览器,其中大部分应用程序是用 javascript 和 HTML(更准确地说是 jQuery)编写的。该应用程序在模拟器上运行良好,但是当我在 G1 上启动它时,它崩溃了。当我减少为应用程序编写的 javascript 数量时,它又开始工作了。或者,如果我删除 javascriptInterface 以访问一些基于“java”的方法,该应用程序也可以工作。
当我尝试加载应用程序所需的所有 javascript 和 java 对象时,它会崩溃(如下面的日志所示)。我可以在 Webkit 中加载的“代码”内存量是否有硬性限制?疯狂的是,这个应用程序使用了很多图像,加载得很好..似乎我对允许解析和加载到 Webkit 的 javascript 行数达到了一些限制?它确实说明了“打开的文件太多”,这可能是问题所在,但我实际上并没有用我的应用程序打开任何文件,所以我对这个错误感到困惑。
谢谢你的帮助。在过去的几天里,我一直在为此苦苦挣扎。
07-03 16:43:23.430: DEBUG/dalvikvm(104): GC freed 964 objects / 41632 bytes in 285ms
07-03 16:43:24.030: DEBUG/dalvikvm(314): GC freed 710 objects / 23680 bytes in 131ms
07-03 16:43:24.380: INFO/ActivityManager(62): Process android.process.im (pid 220) has died.
07-03 16:43:24.650: DEBUG/dalvikvm(104): GC freed 964 objects / 41688 bytes in 154ms
07-03 16:43:24.700: ERROR/IMemory(104): cannot dup fd=1023, size=1048576, err=0 (Too many open files)
07-03 16:43:24.700: ERROR/IMemory(104): cannot map BpMemoryHeap (binder=0x4fe260), size=1048576, fd=-1 (Bad file number)
07-03 16:43:24.820: ERROR/JavaBinder(104): *** Uncaught remote exception! (Exceptions are not yet supported across processes.)
07-03 16:43:24.820: ERROR/JavaBinder(104): java.lang.RuntimeException: No memory in memObj
07-03 16:43:24.820: ERROR/JavaBinder(104): at android.database.CursorWindow.native_init(Native Method)
07-03 16:43:24.820: ERROR/JavaBinder(104): at android.database.CursorWindow.<init>(CursorWindow.java:467)
07-03 16:43:24.820: ERROR/JavaBinder(104): at android.database.CursorWindow.<init>(CursorWindow.java:27)
07-03 16:43:24.820: ERROR/JavaBinder(104): at android.database.CursorWindow$1.createFromParcel(CursorWindow.java:442)
07-03 16:43:24.820: ERROR/JavaBinder(104): at android.database.CursorWindow$1.createFromParcel(CursorWindow.java:445)
07-03 16:43:24.820: ERROR/JavaBinder(104): at android.content.ContentProviderNative.onTransact(ContentProviderNative.java:95)
07-03 16:43:24.820: ERROR/JavaBinder(104): at android.os.Binder.execTransact(Binder.java:287)
07-03 16:43:24.820: ERROR/JavaBinder(104): at dalvik.system.NativeStart.run(Native Method)