Java の memory map を理解する

Apache Lucene のインデックスの取り扱いについて勉強していたら、 Java の memory map について言及されていたが、Jave の memory map1 について日本語で分かりやすく解説されている記事がなかったので、勉強がてらまとめた。 メモリマップ自体の説明はこちらのサイトが非常にわかりやすかった2 mmap はファイルとメモリーアドレスのマッピングを行う つまり、ファイルをメモリ上にマップ(射影)してメモリ上でファイルを扱えるようにするということですね。 Apache Lucene の使用例だと、Lucene の検索用のインデックスファイルを MMap でメモリ上にマップして扱えるようにしていそう。 参考にしたのは上記2つの記事がわかりやすい記事だった。 Java プログラムに関連するメモリは 4 部分から構成される3 Stack: メソッドが呼ばれた際に、Stack はメソッドを完了させるためのメモリ空間を提供する。この空間はパラメータやローカル変数、現在のオブジェクトへの参照などが格納されている。Frame はメモリ空間を参照し、メソッドの呼び出しをサポートする。Stack は LIFO(Last in First out)方式で動作し、呼び出し基のメソッドの Stack frame を削除するために最後の Stack frame(現在実行中のメソッド) を削除する必要がある。 Heap: Java で作成されるオブジェクトは全て Heap で作成される。 Static Area: プログラムの実行中に存在する値を格納するメモリを参照する。静的な変数を宣言した際に、この領域に存在する。 Code: 実行されるコードが格納される場所。 中でも Java の Memory mapped file は、メモリから直接ファイルにアクセスするのに役立つ Java の特殊ファイル4。 Java は、java.nio パッケージで Memory mapped file をサポートしている。 Memory mapped I/O は、ファイル システムを使用して、ユーザーから直接ファイルシステムページへの仮想メモリマッピング(virtual memory mapping)を確立する。Memory mapped file は単純に大きな配列として扱うことができ、Memory mapped file に使用されるメモリーは、Java の Heap 空間外部が利用される。...

August 22, 2022 Â· Shunya Ueta

mvn archetype:generate でJavaのプロジェクト雛形を作成する際のオプションの解説

最近、Java を業務で触っている。 門外漢の自分からすると Maven のお作法が分からなかったので、備忘録がてら残しておく。 mvn archetype:generate コマンドのオプションの意味 mvn archetype:generate コマンドを使えば任意のテンプレートに沿ったプロジェクトを一発で作成することができる。 具体例として、Apache Beam でプロジェクト管理ツールである Maven を使って、mvn archetype:generate コマンドを用いて、プロジェクト作成を行う場合、公式サイトでは以下のように指定されている 1 2 3 4 5 6 7 8 9 $ mvn archetype:generate \ -DarchetypeGroupId=org.apache.beam \ -DarchetypeArtifactId=beam-sdks-java-maven-archetypes-examples \ -DarchetypeVersion=2.31.0 \ -DgroupId=org.example \ -DartifactId=word-count-beam \ -Dversion="0.1" \ -Dpackage=org.apache.beam.examples \ -DinteractiveMode=false オプション名 意味 archetypeGroupId archetypeの groupId つまり、テンプレートを提供している作成元の識別子 archetypeArtifactId archetype のテンプレート。個々では beam-sdk に対応したプロジェクトテンプレートを作成している。 archetypeVersion テンプレートのバージョン groupId Java のパッケージ名のルールに則ったすべてのプロジェクトで唯一に識別可能な識別子。今回は org....

July 18, 2021 Â· Shunya Ueta