JOSM (Java OpenStreetMap Editor) でメモリが確保できないときの対処法

【はじめに:設定する前に】このメモリ設定は、メモリ不足エラーが表示されたとき、または広い範囲の地図データや多数の航空写真画像を扱う作業を予定しているときに行う。通常の編集作業では不要であり、エラーが出ていないのに大きな値を設定すると、JOSMの動作が遅くなる場合がある。

対処法は次の2つである。自分の起動方法に合わせて、一方を選ぶ。

設定値を決めるにはパソコンに搭載されているメモリ(RAM)の量が必要になる。確認方法は「Xmx オプションと搭載メモリの確認」で説明する。

メモリ不足エラーの原因

JOSM (Java OpenStreetMap Editor) で作業中に、下図のようなエラーが発生する場合がある。このエラーは、JOSMが必要とするメモリ(Javaのヒープメモリ)を確保できないときに表示される。広い範囲の地図データを開いたり、多数の航空写真画像を取り込んだりすると発生しやすい。

JOSMのメモリ割り当てエラーダイアログ

JOSMはJava上で動作するプログラムであり、起動時にJavaが確保できるメモリには最大量があらかじめ決まっている。このエラーは、インストーラ版・jarファイル版のどちらの起動方法でも発生し、原因はいずれも「Javaが確保できるメモリの最大量が不足していること」である。最大量を引き上げることで回避できる。起動方法に応じて、対処法1または対処法2のいずれか一方を行う。

なお、近年はパソコンに搭載されるメモリ(RAM)が増えたため、この設定が必要になることは以前より少なくなっている。

Xmx オプションと搭載メモリの確認

メモリの最大量は、Javaの-Xmxオプションで指定する。これは、Javaのヒープメモリ(プログラムが使用する作業用メモリ領域)の最大値を指定するものである。

たとえば-Xmx1024mと書くと、最大値を1024MB(約1GB)に設定する。より多くのメモリが必要な場合は、-Xmx2048m(2GB)や-Xmx4096m(4GB)のように値を増やす。

搭載メモリ(RAM)の確認方法:値を決める前に、パソコンのメモリ量を確認する。キーボードのCtrl + Shift + Escを同時に押して「タスク マネージャー」を開き、「パフォーマンス」タブの「メモリ」を選ぶと、搭載されている総メモリ量(例:16.0 GB)が表示される。

推奨値:確認した物理メモリ(RAM)の半分程度を上限とする。たとえば16GB搭載のパソコンなら、-Xmx8192m(8GB)程度までを目安とする。これを超える値を設定すると、システム全体の動作が不安定になる場合がある。

書き方の注意Xmxと数値の間、または数値とmの間に空白や等号を入れた -Xmx 1024m-Xmx=1024m は、現在のJavaではエラーになる。-Xmx1024mのように、空白や等号を入れずに続けて記述する。

32bit版Javaの制限:対処法2でjarファイルを自分のJavaから起動する場合、32bit版のJavaでは大きな値(おおむね1.5GB以上)を指定できず、指定するとJOSMが起動しないことがある。大きなメモリを割り当てるには、64bit版のJavaを使用する(自分のJavaが何ビットかは、後述のjava -versionの出力に「64-Bit」と表示されるかで判別できる)。対処法1(インストーラ版)は64bit版のJavaを内蔵しているため、この制限はない。

対処法1: インストーラ版でJOSM.cfg を編集する

インストーラ(josm-setup.exe)でJOSMをインストールしている場合は、設定ファイルJOSM.cfgを編集してメモリの最大量を変更する。一度設定すれば以後の起動すべてに反映される。

  1. エクスプローラー(ファイルを開くためのWindows標準のアプリ)のアドレスバーに%LOCALAPPDATA%\JOSM\appと入力し、設定ファイルのあるフォルダーを開く。
  2. そのフォルダー内のJOSM.cfgを、メモ帳(Windows標準のテキストエディタ)で開く。
  3. [JavaOptions]という見出し行の下に、新しい行として次のように追記する。値は「Xmx オプションと搭載メモリの確認」で決めた値に合わせる(下記は8GBの例)。
    java-options=-Xmx8192m
  4. ファイルを上書き保存し、JOSMを起動し直す。設定したメモリの最大量が反映される。

設定が反映されたかの確認:JOSMの起動後、メニューの「ヘルプ」→「動作ログ表示」を開くと、「Memory Usage」の行にJavaが使用できる最大メモリ量が表示される。設定した値(例:8192 MB)になっていれば、反映されている。値が変わっていない場合は、編集したファイルの保存場所、[JavaOptions]の見出し行の下に記述したか、書き方(空白や等号を入れていないか)を確認する。

対処法2: コマンドプロンプトから起動する

jarファイル(josm-tested.jar)をダウンロードして使用している場合は、コマンドプロンプトから-Xmxオプションを付けてJOSMを起動し、メモリの最大量を増やす。

  1. スタートメニューを開き、「cmd」と入力して「コマンド プロンプト」(コマンドを入力するためのWindows標準のツール)を起動する。
    コマンドプロンプトの起動画面
  2. コマンドプロンプトに次のコマンドを入力し、JOSMを起動する。-Xmxオプションの意味は「Xmx オプションと搭載メモリの確認」を参照する。

    下記は、jarファイル(Java実行形式ファイル)がC:\josm-tested.jarに保存されている場合の例である。ファイルパスは各自の環境に合わせて変更する。

    java -Xmx1024m -jar C:\josm-tested.jar
    コマンドプロンプトでのJOSM起動コマンド入力例

JOSMが起動しない場合:まずJavaが正しくインストールされているかを確認する。コマンドプロンプトでjava -versionと入力し、バージョン情報が3行ほど表示されれば、Javaは正しくインストールされている。表示されない場合はJavaが入っていないため、インストールが必要である。また、大きな-Xmx値を指定して起動しない場合は、「Xmx オプションと搭載メモリの確認」の32bit版Javaの制限を参照し、64bit版のJavaを使用する。

設定が反映されたかの確認:JOSMの起動後、メニューの「ヘルプ」→「動作ログ表示」を開くと、「Memory Usage」の行にJavaが使用できる最大メモリ量が表示される。設定した値(例:1024 MB)になっていれば、反映されている。