定義

メモリのトピックについて(一般)

メモリに関する留意事項:

  • 中央メモリ(1次記憶装置とも呼ばれます)は、プログラムの実行時にデータを一時的に記憶できます。中央メモリはRAMと呼ばれるものに相当します。
  • 大容量メモリ(2次記憶装置とも呼ばれます)は、データを長期的に(コンピューターの電源オフ時を含む)保存できます。大容量メモリは、磁気記憶装置(ハードディスクなど)、光学記憶装置(CD-ROMやDVD-ROMなど)、固定記憶装置に相当します。

仮想メモリは、“物理メモリ(RAM)とページネーションファイル(SWAP、pagefile.sys)の組み合わせ”に相当します。

メモリについて(Flux)

コンピューターサイエンスの観点から見ると、Fluxは次のものを備えています:

  • 次の2つの主要コンポーネント:
    • Fortran言語による1つの“計算”コンポーネント(非表示部分)
    • Java言語による1つの“GUI”コンポーネント(表示部分)
  • Javaによるこれら2つのコンポーネント間の1つの接続

したがって、上記の各コンポーネントを動作させ、これらのコンポーネント間の接続を可能にするため、メモリ空間はFluxの開始時に静的に割り当てられるか、Fluxの実行時に動的に割り当てられる必要があります。

メモリの配分を次の図に示し、以降の項で説明します。

注: 一部のFlux外部コンポーネントには追加メモリが使用されます。

計算メモリ

計算メモリは以下で構成されます:
  • 数値メモリ

    これは、さまざまなモデル化アクションで使用されるメモリです。3Dメッシングおよび解析プロセス(2Dと3D)は、大量のメモリを要求するプロセスです。

    割り当てられるメモリサイズは、アプリケーションタイプ(実数 / 複素数)と解析プロセスのマトリックスサイズに応じて決まります。

  • 文字メモリ

    これは、ディレクトリにあるエンティティ名(パラメータ / 変換 / 領域など)とプロジェクト名の保存に使用されます。

計算メモリの管理(数値メモリと文字メモリ)に関しては、次の2つの管理モードがあります:
  • 静的モード

    このメモリ管理モードはデフォルトモードです:Userがオンになります。

    Fluxでは、メモリの内部ガベージコレクターが使用されます。このツールは、Fluxの開始時にグローバルメモリ空間を割り当てます。このメモリ空間は、数値メモリ用と文字メモリ用の2つのFortranテーブルで構成されます。これらの各テーブルのサイズは、メインプログラムに書き込まれるFortranパラメータによって制御されます。

    注: *定義:

    静的割り当て: Fluxの開始用に予約されているメモリのサイズは、ユーザーが設定します(したがってこれは変更可能です)。

  • 動的モード(Flux 2020から使用可能な新機能)

    このメモリ管理モードをアクティブにするには、Dynamicをオンにする必要があります。

    Fluxの実行に必要なメモリ空間は、Fluxの実行中にFlux自体によって動的に管理されます。

GUIメモリ:

現在にいたるまで、GUIメモリは専ら静的に管理されています(User)。

GUIメモリは、グラフィカルユーザーインターフェース(グラフィック表示など)に関するすべてに使用されるメモリです。

グラフィックウィンドウでは、左下にあるフラグによって、グラフィックメモリの使用状況が図示されます。このフラグが赤色の場合は、これをダブルクリックすることで、プロセスで使用されているメモリを強制的に解放できます。

システムメモリ

システムメモリは、User管理モードでのみ表示され、数値、文字、およびGUIメモリに加えて、追加のメモリ空間が使用されていることを示します。

システムメモリは、システムが適切に動作するように割り当てられるメモリで、以下により構成されます:

  • «実行可能»メモリ: Fluxプログラム(実行可能ファイル)用のメモリ空間。
  • «キャッシュ»メモリ: 計算コンポーネント(Fortran)とGUIコンポーネント(Java)の間でデータを転送するためのメモリ空間。

    このメモリを定量化するのは難しく、データの復旧時にこのメモリによってエラーが発生する可能性があります。

追加メモリ

Fluxの一部のコンポーネントまたは機能は、追加のメモリを消費します:
  • インポート時、およびモデラー内: ACISライブラリ
  • メッシュ生成時:MeshGems(使用されている場合)
  • 解析プロセス時:MUMPS(使用されている場合)
注: 静的メモリの場合は、これらのコンポーネントを実行可能にするために、使用可能なすべてのメモリをFluxに割り当てないでください。