メタスペースはネイティブ メモリから割り当てられますか?
はい。
決定的なソース: https://blogs.oracle.com/poonam/entry/about_g1_garbage_collector_permanent
しかし、私はネット上でどこにも行きませんでした ネイティブメモリとは何ですか?
ネイティブ ヒープは、ネイティブ コード (C++) で実装される JVM の部分に動的メモリを提供する malloc/free ヒープです。また、JVM によってロードされたユーザー提供のネイティブ ライブラリでも使用できます。ネイティブ ヒープ自体はガベージ コレクションされませんが、メタスペースはガベージ コレクションされます。
ネイティブ ヒープを使用してメタスペース オブジェクトを保持する利点の 1 つは、Java ヒープのようにネイティブ ヒープの最大サイズが (デフォルトで) 固定されていないことです。
はいの場合、Windows OS に 15 GB の RAM がある場合を考えてみましょう。-Xmx 4GB のマシンで実行されているプロセス (Java プロセス) は 1 つだけです。OS は最大 (15-4)=11 GB のメタ スペース メモリが割り当てられるということですか?
多分:
Windows マシンには他のプロセスがあります。それらの多くは。それらがシステムプロセスであるというだけです。
Java プロセスがどれだけ大きくなることができるかについて、OS によって強制された制限がある可能性があります。ulimit
(Windows には、UNIX/Linux システムでの役割を果たすものがあると想定しています。)
ページングに使用できるディスク領域がある場合、OS は、物理メモリ ページとして使用できるよりも多くのメモリを Java プロセスに実際に割り当てる場合があります。