Android 上的 RPC 导致 GC_EXPLICIT
我需要将本地 sqlite 数据库与远程 mysql 数据库同步。 我正在测试不同的 XMLRPC
和 JSONRPC
项目来执行此操作。
我发送一个数据包,其中包含每个表尚未同步的所有条目。
当这些 RPC 项目解析数据时,logcat 中会填充 GC_EXPLICIT。
GC_EXPLICIT表示垃圾 收藏家已被明确要求 收集,而不是被触发 堆中的高水位线。发生的事 到处都是,但最有可能的是 当一个线程被杀死或者当 绑定器通信被取消。 〜罗伯特
我尝试修改 XMLRPC 项目,以便在从数据包中读取条目后立即执行我想要的操作,然后使用相同的对象变量实例化下一个条目。
然而,这并不能解决对垃圾收集器的收集请求。
有什么想法吗?尖端?建议?
I need to synchronize my local sqlite database with a remote mysql database.
I'm testing different XMLRPC
and JSONRPC
projects to do so.
I send a packet containing all entries that arn't synced yet for each table.
When these RPC projects are parsing the data logcat is filled with GC_EXPLICIT
.
GC_EXPLICIT means that the garbage
collector has been explicitly asked to
collect, instead of being triggered by
high water marks in the heap. Happens
all over the place, but most likely
when a thread is being killed or when
a binder communication is taken down. ~ Robert
I tried to modify a XMLRPC project to perform my desired actions right after an entry is read from the packet and then use the same object variable to instantiate the next entry.
This however does not solve the collect requests to the garbage collector.
Any idea? tips? suggestions?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
几天前我解决了我的问题。
我正在使用 Alex 制作的 Android JSON RPC 模块(项目)。
我删除了模块解析 JSON 的部分。并使用正则表达式创建了我自己的解析例程。该模块还执行 SQLite 查询,而不是创建 JSON 对象。
我改变的另一件事是该模块将接受和接收最多 1000 个条目的多个数据包。
代码速度极快,原来需要30分钟才能同步3000个条目,现在只需要3分钟。我发布此信息而不是代码的原因是因为代码是非常特定于项目的。
有关如何循环以及为什么不分配超过 1000 个对象的信息,请参阅 android 性能文档。
I solved my problem a couple days ago.
I'm using the Android JSON RPC module made by Alex (project).
I removed the part where the module parses the JSON. And created my own parse routine using regex. The module also performs SQLite query's instead of creating JSON objects.
Another thing I changed is that the module will accept and receive multiple packets with a maximum of 1000 entries.
The code is extreemly fast, it took 30 minutes to synchronize 3000 entries, now it only takes 3 minutes. The reason why I'm posting this information instead of the code is because the code is very project specific.
Information about how to loop and why not to allocate over 1000 objects is described in the android performance document.