我最近发现,NDK代码可以分配的内存量没有硬性限制,而在Java端可以分配的内存量非常有限(在大多数设备上为25 of )。我想写一个图像处理应用程序(类似Photoshop),它需要在内存中同时保存几个大的位图,其中位图数据将占用20 at的内存。在Java中这样做,使应用程序很容易在我尝试过的许多设备上出现内存异常。我的所有当前代码都使用Bitmap和Canvas类来执行图像操作。举个例子,如果
在我使用java的android studio项目中,我使用Executors(Executors.newFixedThreadPool将线程数初始化为3)来运行在位图上执行某些进程的线程。但有时会在日志中显示此错误并使活动崩溃(我已经从每个日志的第一个日志中删除了时间和我的包名称)。$Worker.run(ThreadPoolExecutor.java:636)
A/zygote: java_vm_ext.cc:504] at