一个调用第三方 so 库的程序,内存总是随着运行时间暴涨,dump 下来的 java heap 并不大,于是怀疑是 native heap 出现了内存泄漏。。
之后程序加上了定时 gc,情况只是稍微好转,native heap 的内存依旧持续增长。。。
请问下面哪些情况需要主动释放内存来避免 native heap 的内存泄漏呢?
//1 jna 回调 中的 pointer 或者结构体
public interface cb extends Callback {
public void invoke(LLong lAttachHandle, Pointer pstGrayInfo, Pointer dwUser);
}
//pstGrayInfo 需要主动释放么?
//2 函数写入的出参结构体
boolean foo(Structure outparam);
//outparam 及其中包裹的结构体需要主动释放么?
//3 发现一些结构体中包含其他结构体,这个成员变量却不需要初始化就能正常使用
public static class A extends Structure {
public B b;
}
public static class B extends Structure{
public int a;
}
这里 A 中的成员变量 b 不需要初始化,这个 b 需要手动释放么?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.