1. 程式人生 > >JVM如何管理內存

JVM如何管理內存

文件的 內存 類裝載器 不同的 cnblogs 其中 代碼 聲明 構造

JVM如何管理內存,分成幾個部分?分別有什麽用途?說出下面代碼的內存實現原理:

  • JVM內存分為“”、“”和“方法區”三個區域,分別用於存儲不同的數據。

堆內存用於存儲使用new關鍵字所創建的對象;棧內存用於存儲程序運行時在方法中聲明的所有的局部變量;方法區用於存放類的信息,Java程序運行時,首先會通過類裝載器載入類文件的字節碼信息,經過解析後將其裝入方法區。類的各種信息(包括方法)都在方法區存儲。

1 Foo foo = new Foo();
2 foo.f();

以上代碼的內存實現原理為:

  1. Foo類首先被裝載到JVM的方法區,其中包括類的信息,包括方法和構造等。
  2. 在棧內存中分配引用變量foo
  3. 在堆內存中按照Foo類型信息分配實例變量內存空間;然後,將棧中引用foo指向foo對象堆內存的首地址。
  4. 使用引用foo調用方法,根據foo引用的類型Foo調用f方法。

JVM如何管理內存