ページ更新: 2005-04-09 (土) (5302日前)

関連: Java/Threadの個数

JNIでJavaからネイティブコードを呼び出すときの、ネイティブコード側のスタックの設定について。

調査中

[編集]

考えてみる #

WindowsとLinuxだと、たぶんこんな感じ。

  1. Javaのプロセス自体のスタックを増やしてやる
    1. Windowsならeditbinの/STACK:reserve[,commit]。確認はdumpbinの/HEADERS。
      (これって、いにしえのMS-DOSの頃からあるような気がする。 そのころは(いまも?)スタートアップルーチンに依存していたので、MS-C, Borland-C++で手順が違ったかもしれず)
  2. ネイティブコード側で、スタックを切り替える。
    1. [JavaHouse-Brewers:40570] Re: java のスタックサイズ
    2. [JavaHouse-Brewers:40618] Re: java のスタックサイズ
  3. ネイティブコード側で新たにスレッドを作成し、そのときにスタックサイズを設定し、 それから実際の処理を呼び出すようにする。
    1. Windowsでは、CreateThreadの dwStackSize。 _beginthreadのstack_size。

SWTでActiveXを呼び出せるから、そっち方面からも情報が得られるかも。

[編集]

Googleに聞いてみた #

Java Forums - Stack overflow in JNI call
http://forum.java.sun.com/thread.jspa?threadID=596209

Bug ID: 4362291 Stack size argument ignored (-Xss and -ss)
http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4362291