JNIでDLLの関数を呼び出す
JNIでDLLの関数を呼び出した場合、ヒープとかどうなるんだろ?ということで調べてたのでメモ。
Oracle > Java Native Interface 仕様 > 2. 設計の概要
Cヒープ
Native Heap(C-Heap)ってとこが使われるのね。ローカル宣言されたオブジェクトは、関数が処理終了したらGCの対象でえんよな?Nativeでstaticなオブジェクトとかあるんかいな???
Java Heap space - HotSpot VM 〜 Java EE Support Patterns
Java講座 [Javaのメモリ管理 - GC、ガベージコレクション、Heap]
エントリポイント
native修飾子でインターフェースを定義して、それに応じたヘッダファイルを作成して、それを実装するという流れか。
クラス名がヘッダファイル名となるんなら、Java側でDLLを呼び出すためのstaticなUtilクラスを作るって感じでいいのかな?
JNIEXPORT (戻り値の型) JNICALL Java_(クラス名?ヘッダファイル名?)_(native修飾子で定義したメソッド名)
Microsoftサポート > JNI を使用して Java からネイティブ (DLL) コードを呼び出す方法
引数がある場合は、そのまま第3引数以降が追加されるみたい。
JNI -配列をパラメータとして渡す-