【发布时间】:2011-10-06 16:36:16
【问题描述】:
项目:Java、JNI (C++)、Android。
我将通过创建一个托管包装类来管理本机 C++ 对象的生命周期,该类将保存一个指向本机对象的指针(作为长成员),并将在其被覆盖的 finalize() 方法中删除本机对象。详情请见this question。
C++ 对象不消耗其他类型的资源,只消耗内存。对象的内存占用不是很高,但本质上高于Java中的64位长。有没有办法告诉 Java 的 GC,我的包装器不仅负责一个 long 值,而且在运行垃圾收集之前创建数百万个这样的对象不是一个好主意?在 .NET 中有一个 GC 的 AddMemoryPressure() 方法,正是为了这个目的。 Java中是否有等价物?
【问题讨论】:
-
由于在 Java 中 JNI 是非常规的例外,而在 C# 中它非常重要 - 不,据我所知没有办法做到这一点。
标签: java memory-management garbage-collection java-native-interface