java - 如何使用 java 有效地加载 native 共享对象

标签 java linux memory-management

我有一个 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/

相关文章:

memory-management - Windows 任务管理器列 - 句柄

ios - 正在释放 :completion blocks? 可接受的对象

java - 使用 JSTL 标签(点字符)转义 JSP EL

java - 错误表达式非法开始

java - 将这个 "Marquee code"添加到我的 Jframe 中的 JLabel

c# 如何避开内存分配瓶颈以提高多线程性能

java - Java 中的返回类型 - long 到 int 转换 - IntelliJ 提示?

linux - Linux 不挂载的 block 设备信息

c++ - gcov-工具合并 : "not a gcov data file"

c - 传递给要在 main() 之前和之后执行的函数的参数