近段時間研究了java的程序執(zhí)行過程中的內(nèi)存分配,收獲頗多,解決了我最近時間學(xué)習(xí)java的很多困惑點。寫java內(nèi)存分析系列的目的主要有兩個,一來是希望給像我一樣的java初學(xué)者一定的啟發(fā),希望也能解決的java關(guān)于內(nèi)存方面的困惑點。二來也是給自己做個總結(jié),畢竟只有自己親自寫出來的東西,才是真正的東西。今天就開始java程序執(zhí)行過程內(nèi)存分析系列第一篇。

     一、 java執(zhí)行程序時內(nèi)存的劃分

         一般來說,作為初學(xué)者,一般只是將java程序的內(nèi)存只是分為棧區(qū),和堆區(qū)。確實剛開始學(xué)時這樣劃分能都便于我們理解,但是隨著學(xué)習(xí)java時間的增多,如果內(nèi)存劃分還只是簡單的只有棧和堆兩個區(qū),就有很多東西不能深入理解,就拿個常用的字符來說,就很難理解字符串的一些特性。于是乎我這里就增加一個內(nèi)存區(qū)域的劃分,這樣比以前能理解更多的東西。這個新增的內(nèi)存區(qū)域是什么呢?其實也不是新增,就是把以前堆內(nèi)存劃分為方法區(qū)和其他區(qū)。那方法區(qū)里面存放些什么東西勒,方法區(qū)里面主要存放三個東西,第一個是程序的代碼,第二個是常量池,這里主要存放一些java程序中的一些常量和字符串常量,第三個是靜態(tài)的變量。堆內(nèi)存劃分如圖所示。seo優(yōu)化培訓(xùn),網(wǎng)絡(luò)推廣培訓(xùn),網(wǎng)絡(luò)營銷培訓(xùn),SEM培訓(xùn),網(wǎng)絡(luò)優(yōu)化,在線營銷培訓(xùn)

     二、.一個java程序執(zhí)行過程中的內(nèi)存分析

  首先我定義了一個people類,里面有姓名和性別兩個成員變量和一個說話的成員方法。另外還有一個測試類,測試people類,好了,萬事俱備,只欠東風(fēng)了。下面正式開始內(nèi)存分析。

seo優(yōu)化培訓(xùn),網(wǎng)絡(luò)推廣培訓(xùn),網(wǎng)絡(luò)營銷培訓(xùn),SEM培訓(xùn),網(wǎng)絡(luò)優(yōu)化,在線營銷培訓(xùn)

1 public class People {2     String name;//定義一個人的姓名3     String sex;4     public void speak(){5