Scalaのライブラリを使いたいけど、ドキュメント見つからない!
ってときは、自分で scaladocコマンド で生成します。
ただ、大きなライブラリからドキュメント生成しようとするとOutOfMemoryで失敗することがあります。
$ scaladoc -d doc/ -s src/main/scala/**/*.scala
実行!
uncaught exception during compilation: java.lang.OutOfMemoryError
three errors found
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
at scala.reflect.internal.util.HashSet.growTable(HashSet.scala:97)
at scala.reflect.internal.util.HashSet.findEntryOrUpdate(HashSet.scala:39)
at scala.reflect.internal.Types$class.unique(Types.scala:3940)
...
ギャー!
そんなときは、JAVA_OPTS に JVM で利用するメモリ量を指定することで対処できます。
$ export JAVA_OPTS="-Xms256m -Xmx1024m"
$ scaladoc -d doc/ -s src/main/scala/**/*.scala
Xms は初期 / Xmx は最大ヒープサイズです
おまけ
scaladoc のコードを追っていくと
[[ -n "$JAVA_OPTS" ]] || JAVA_OPTS="-Xmx256M -Xms32M"
...
execCommand \
"${JAVACMD:=java}" \
$JAVA_OPTS \
"${java_args[@]}" \
$(classpathArgs) \
-Dscala.home="$SCALA_HOME" \
-Dscala.usejavacp=true \
$EMACS_OPT \
$WINDOWS_OPT \
scala.tools.nsc.ScalaDoc "$@"
という箇所があります。
JAVA_OPTSが指定されていなければ、デフォルトで最大ヒープサイズ 256MB 使うとなってます。