2

Java 8 では、メタ スペースはネイティブ メモリから割り当てられますが、ネット上のどこにもアクセスできませんでした。ネイティブ メモリとは何ですか? このリンクでは、OS で使用できるメモリですが、Java の Metaspace とネイティブ メモリの違い では、ネイティブ メモリも JVM プロセスに与えられたメモリの一部として表示されます。

例: - はいの場合、Windows OS に 15 GB の RAM がある場合を考えてみましょう。のマシンで実行されているプロセス (Java プロセス) は 1 つだけ-Xmx 4GBです。

OSが(15-4)=11 GB割り当てられるメタスペースメモリを最大で使用できるということですか?

4

2 に答える 2

2

メタスペースはネイティブ メモリから割り当てられますか?

はい。

決定的なソース: 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 プロセスに実際に割り当てる場合があります。

于 2016-10-25T14:02:27.373 に答える
1

ネイティブ メモリは、アプリケーションの通常のメモリです。これは、JVM によって管理されるヒープ メモリに当てはまります。たとえば、C プログラムでは、単に「メモリ」と呼ばれます。

于 2016-10-25T14:02:39.397 に答える