Stack Size/ja
{{#customtitle:スタック・サイズ|スタック・サイズ — MapToolDoc}}
スタックとは?
MapTool の起動時、JAVA仮想マシン(これは君のパソコンでMapToolを動かすためのプログラムだ!)は MapTool 用にいくつかの設定を行う。そのうちの2つの設定は MapTool が使用するメモリー、メイン・メモリーとスタックに関するものである。
メイン・メモリーの割り当て
MapTool へのメイン・メモリーの割り当ては単純にパソコンのRAMをMapToolがどれだけ利用可能かを示せば良い。たとえば、2GBのRAMがあるなら、MapTool に潤沢な1GBのメモリーを与えても良いし、望むのなら「MapToolは256KBのメモリーしか使っては行けません!」ということにしても構わない。
スタック・サイズ
MapToolが利用可能なメモリー総量以外に、起動時に Java が設定するメモリー量に関するもう一つの設定は、プログラム内の各スレッドが一度に利用可能なメモリー量のことである。このメモリーをスタックと呼ぶ。
このスタックは計算を伴うマクロを使うときに特に重要なものだ。複雑なマクロは、より多くのスタックメモリーを消費するからだ(いくつかのマクロはとてつもなく複雑だ!)。
結局のところ、マクロは複雑になるもので、利用可能なスタックを食いつくすと更なるメモリを求めてだだをこね始める。そしてそのとき、Stack Overflowのエラーを吐き出し、マクロは動かなくなってしまう。
スタックの設定
さしあたり、MapTool は Java により設定される標準のスタックサイズをそのまま使用する。実際の容量はパソコンやOSにより様々であるが、単純なマクロを動作させるには十分な容量である。
強力かつ柔軟な能力を持つマクロになってくると、標準のスタックサイズの限界に達するので、ユーザーはスタックサイズを相応しい容量まで引き上げることになる。
.BAT や .SH でのスタックサイズの設定
MapTool を起動するには、ダウンロードしZIPファイルを展開した MapTool に含まれる数種類のバッチファイルを利用する方法がある。これらのファイルはLaunch Maptool-512M-Memory.bat(Windows用)やLaunch MapTool.sh(Linux用)といったファイル名になっている。ファイル名の数値は MapTool が確保するメイン・メモリーの容量を指している。これらのバッチファイルの中身は次のようになっている:
javaw -Xmx512M -Xss512K -jar maptool-*.jar run
-X
. The first, -Xmx512M
indicates how much main memory (in this case, 512MB) is allocated to the Java virtual machine. ここで重要となる点は-X
で始まる部分だ。一つ目の、-Xmx512M
はJava仮想マシンがどれほどメイン・メモリーを予約するかを表している(この場合は512MB)。
-Xss512K
is how much memory is allocated to the stack (the "ss" is for "stack size"). 二つ目の、-Xss512K
はスタックがどれ程のメモリーを予約するか、ということだ(「ss」は「スタック・サイズ(stack size)」のこと)。
-Xss512K
is absent. To set the stack size allocated (overriding the defaults that are picked by Java or the value indicated), do the following:バージョンが1.3.b54より古い MapTool では -Xss512K
は欠けている。確保するスタック・サイズを設定する(Javaが設定する初期値を上書きする)方法は下記の通り:
1. バッチファイルをメモ帳などのテキストエディターで開く。
-Xss512K
line to be another value, for instance, -Xss1M
or -Xss2M
(M is for megabytes, K is for kilobytes).2. -Xss512K
の部分を、-Xss1M
や-Xss2M
などの異なる値に書き換える(M はメガバイト、K はキロバイトを意味する)。
3. ファイルを保存し、このバッチファイルを使い MapTool を起動する。
注意:スタック・サイズを変更する場合、一般的な最適値は 512K、1M、または2Mである。決して 512M と設定しないように! さもなくば大変なことになってしまうだろう。
MapToolLauncherを使用したスタックサイズの設定
WebStart利用時のスタックサイズの設定
Mac OSX でのスタックサイズの設定
- Ctrl-click (or right-click) on the application icon (the filename should end with .app).
- Choose Show Package Contents and a Finder window will open.
- Open the Contents folder and locate the Info.plist file.
- Ctrl-click (or right-click) on that file and choose Open With > Other...
- In the Choose Application dialog that opens, locate TextEdit and double-click on it.
- The Info.plist file is now open. There is an entry in the file called VMOptions (mine was about two-thirds of the way down the file) that should be changed to match the memory characteristics your GM wants you to use. Here's what mine looks like in case you want a reference for the following steps:
- <key>VMOptions</key>
- <array>
- <string>-Xmx768m</string>
- <string>-Xms64m</string>
- <string>-Xss3m</string>
- </array>
- Replace your entries with the example text in Step 6. However, your GM may have directed you to use a particular value for the "maximum memory" setting. If so, replace the 768 number with the new maximum. The GM may also ask you to change the "stack size" amount -- that's the 3 number following the ss. (The 64 number never needs to be changed.) If you have other entries between the <array> and </array> lines, they should be removed because you're specifying completely new values.
- Use Cmd-Q and then choose Save. You can close the Finder window that opened as well.