2009-07-03 7 views
1

J'ai une application qui est basée sur les technologies Web 2.0 - essentiellement j'utilise l'approche phonegap/titanium pour démarrer un navigateur web où la plupart de l'application est écrite en javascript et HTML (jQuery, pour plus de précision). L'application fonctionne très bien sur l'émulateur, mais quand je la lance sur le G1, elle plante. Lorsque je réduis la quantité de javascript qui a été écrite pour l'application, elle recommence à fonctionner. Sinon, si je supprime javascriptInterface pour accéder à certaines des méthodes "java", l'application fonctionne également. Lorsque j'essaie de charger tous les objets javascript et java requis pour l'application, il se bloque (comme dans le journal ci-dessous). Y at-il une limite stricte sur la quantité de mémoire "code" que je peux charger dans Webkit? La chose folle est que cette application utilise beaucoup d'images, ce chargement très bien .. semble que je suis en train de frapper une limite sur le nombre de lignes de javascript que je suis autorisé à analyser et charger dans Webkit? Cela dit quelque chose sur "Trop de fichiers ouverts", ce qui pourrait être le problème, mais je n'ouvre aucun fichier avec mon application, donc je suis confus par cette erreur.L'application android phonegap échoue en chargeant trop de javascript

Merci pour toute aide. J'ai eu du mal avec ça ces derniers jours.

Meilleur.

Alex

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) 
+0

J'ai eu un problème similaire, mais mon problème était que j'ouvrais les curseurs et ne les fermais jamais. Je suggère à tous ceux qui se battent avec cela de voir si oui ou non ils font la même chose –

Répondre

0

Je mettrais un droit sur les points d'arrêt où vous pensez que meurt android.process.im et jusqu'à ce que le pas à pas que vous obtenez votre accident pour isoler le bogue. Je suppose que le processus meurt et que quelque chose arrive qui provoque une cascade d'erreurs parce que le processus n'existe plus pour gérer l'erreur ('ne peut pas dupliquer/trop de fichiers ouverts', 'Exception distante non interceptée!

1

Je suis en train de charger trop de contacts à la fois depuis java, et exposer ce grand objet JSON à travers le pont javascript a causé le problème de la mémoire. quand j'ai 1000 contacts, les choses se cassent, ce que 10 contacts tout allait bien - je pensais que c'était quelque chose de spécifique au g1, puisque le problème n'apparaissait pas dans l'émulateur, mais j'avais négligé l'autre nombre de contacts

4

Parfois, lorsque vous réinstallez constamment l'application via votre émulateur, votre téléphone peut manquer de mémoire car il y a un bug dans le processus de «déliaison» sur android.

j'ai eu cette erreur: com.android.ddmlib.SyncException: Trop de fichiers ouverts - et a dû redémarrer mon téléphone pour libérer la mémoire.

J'espère que vous n'aurez à le faire qu'une ou deux fois durant votre journée de développement. Bonne chance!

Questions connexes