我有一个 30MB 的共享对象,它通过 system.load 加载到一个 java exe 中,例如:
System.load("mylib.so");
这似乎将完整的二进制文件加载到 RAM 中,导致运行时 30MB 的损失。我正在寻找一种方法来避免这种惩罚,方法是通过一些分页设置或类似的东西来防止一次加载完整的共享对象。我需要在嵌入式设备上更高效地使用内存,而这 30MB 是迄今为止最大的单个 block 。
这是否有可能在不实际减小共享对象本身大小的情况下进行改进(顺便说一下,这将是一项艰巨的任务)。
谢谢。
最佳答案
这就是 System.load 要做的事情。在 native 应用程序中也会发生同样的事情,如果您使用 so 进行链接,那么它会将整个内容加载到内存中,java 无法解决这个问题。
关于java - 如何使用 java 有效地加载 native 共享对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26616834/