2011-07-22 7 views
0

私はJNAを使ってJavaにC DLLライブラリをラップすることに取り組んでいます。ライブラリはC#ラッパーを提供しています。 C#のラッパーのコンストラクタは、オブジェクトが作成されたオブジェクトのメモリが作成されたオブジェクト、およびオブジェクトのメモリを指す整数GCHandle.Alloc(によって固定されているJavaのGCHandle.Alloc()と同等のコードですか?

this.m_object = _CreateObject(); 
this.m_objectGCH = GCHandle.Alloc(this.m_object, GCHandleType.Pinned); 

m_objectによって固定されています)。オブジェクトを作成し、JNAによってオブジェクトへのポインタを取得できます。しかし、私はJavaでオブジェクトメモリを固定することは考えていません。

+0

javaに直接対応するものはありません。より多くのコンテキスト(つまり、どのように/なぜJNA w.r.t. JNAオブジェクトを使用しようとしているか)を提示すると、回避策を提案することができます。 –

答えて

0

JavaのGCは、オブジェクトに割り当てられたネイティブメモリを意識していません。将来的にメモリを削除する責任がある場合は、オブジェクトの割り当てで推奨される「空き」メソッドを呼び出して、Javaコードで明示的に行う必要があります。

JavaオブジェクトをJavaで確実に処理する必要がある場合は、オブジェクトが不要になるまでそのオブジェクトへの参照があることを確認する必要があります(最も簡単な方法は、静的(クラス)変数)。

関連する問題