1. 程式人生 > >JAVA的JVM的記憶體可分為3個區:堆(heap)、棧(stack)和方法區(method)

JAVA的JVM的記憶體可分為3個區:堆(heap)、棧(stack)和方法區(method)



堆區:
1.儲存的全部是物件,每個物件都包含一個與之對應的class的資訊。(class的目的是得到操作指令)
2.jvm只有一個堆區(heap)被所有執行緒共享,堆中不存放基本型別和物件引用,只存放物件本身.

3.一般由程式設計師分配釋放, 若程式設計師不釋放,程式結束時可能由OS回收 。

棧區:
1.每個執行緒包含一個棧區,棧中只儲存基礎資料型別的物件和自定義物件的引用(不是物件),物件都存放在堆區中
2.每個棧中的資料(原始型別和物件引用)都是私有的,其他棧不能訪問。
3.棧分為3個部分:基本型別變數區、執行環境上下文、操作指令區(存放操作指令)。


4.由編譯器自動分配釋放 ,存放函式的引數值,區域性變數的值等.

 

 

 

靜態區
/方法區:
1.方法區又叫靜態區,跟堆一樣,被所有的執行緒共享。方法區包含所有的class和static變數。
2.方法區中包含的都是在整個程式中永遠唯一的元素,如class,static變數。

3.—,全域性變數和靜態變數的儲存是放在一塊的,初始化的全域性變數和靜態變數在一塊區域, 未初始化的全域性變數和未初始化的靜態變數在相鄰的另一塊區域。


程式碼例項(轉自網路)

AppMain.java
 
publicclass  AppMain //執行時, jvm 把appmain的資訊都放入方法區{
    
publicstaticvoid  main(String[] args)  //main 方法本身放入方法區。
    {
         Sample test1 
=new  Sample( " 測試1 " );   //test1是引用,所以放到棧區裡, Sample是自定義物件應該放到堆裡面          Sample test2 =new  Sample( " 測試2 " );

         test1.printName();
         test2.printName();
    }
}

Sample.java

publicclass  Sample //執行時, jvm 把appmain的資訊都放入方法區{
     
/** 範例名稱 */private  name; //new Sample例項後, name 引用放入棧區裡,  name 物件放入堆裡
/** 構造方法 */public  Sample(String name)
     {
          
this .name = name;
     }

     
/** 輸出 */publicvoid  printName()   //print方法本身放入 方法區裡。     {
         System.out.println(name);
     }
}

相關推薦

JAVA的JVM的記憶體分為3(heap)(stack)方法(method)

堆區:1.儲存的全部是物件,每個物件都包含一個與之對應的class的資訊。(class的目的是得到操作指令)2.jvm只有一個堆區(heap)被所有執行緒共享,堆中不存放基本型別和物件引用,只存放物件本身.3.一般由程式設計師分配釋放, 若程式設計師不釋放,程式結束時可能

JVM 記憶體初學 ((heap)(stack)方法(method) )

先了解具體的概念: JAVA的JVM的記憶體可分為3個區:堆(heap)、棧(stack)和方法區(method) 堆區: 1.儲存的全部是物件,每個物件都包含一個與之對應的class的資訊。(class的目的是得到操作指令) 2.jvm只有一個堆區(heap)被所有執行緒

Java裏的(heap)(stack)方法(method)

sample malloc 靈活 gif 寄存器 範例 sam windows 初始 基礎數據類型直接在棧空間分配, 方法的形式參數,直接在棧空間分配,當方法調用完成後從棧空間回收。 引用數據類型,需要用new來創建,既在棧空間分配一個地址空間,又在堆空間分配對象的類變

Java --- (heap)(stack)方法(method)

java 的記憶體分為兩類,一類是棧記憶體,一類是堆記憶體。 棧記憶體是指程式進入一個方法時,會為這個方法單獨分配一塊私屬儲存空間,用於儲存這個方法內部的區域性變數,當這個方法 結束時,分配給這個方法的棧會釋放,這個棧中的變數也將隨之釋放。 堆是與棧作用不同的記憶體,一般用於存放不放在當前方法棧中的

Java記憶體區域(虛擬機器本地方法程式計數器方法)GC機制

目錄 Java垃圾回收概況 Java記憶體區域 Java物件的訪問方式 Java記憶體分配機制 Java GC機制 垃圾收集器 Java垃圾回收概況   Java GC(Garbage Collection,垃圾收集,垃圾回收)機制,是Java與C

專案組織結構的3種類型職能型專案型矩陣型

職能型組織結構 職能型組織結構是目前最普遍的專案組織形式。它是一個標準的金字塔型組織形式,見圖 職能型組織結構是一種常規的線型組織結構。採用這種組織結構時,專案是以部門為主體來承擔專案的,一個專案由一個或者多個部門承擔,一個部門也可能承擔多個專案,有部門經理也有專

壓力測試衡量CPU的三指標CPU UtilizationLoad AverageContext Switch Rate

版權宣告:本文為博主原創文章,未經博主允許不得轉載。 https://blog.csdn.net/marising/article/details/5182771 CPU Utilization 好理解,就是CPU的利用率,75%以上就比較高了(也有說法是80%或者

JMM與併發相關的三特性原子性可見性有序性

一、原子性(Atomicity) 由Java記憶體模型來直接保證的原子性變數操作包括read、load、assign、use、store和write這六個,我們大致可以認為基本資料型別的訪問讀寫是具備原子性的,如果應用場景需要一個更大範圍的原子性保證,Java記憶體模型還提供了lock和unlock

Java複習-併發程式設計中的三問題原子性可見性有序性

在併發程式設計中,我們通常會遇到以下三個問題:原子性問題,可見性問題,有序性問題。 1、原子性: 原子性:即一個操作或者多個操作 要麼全部執行並且執行的過程不會被任何因素打斷,要麼就都不執行。 2、可

Jave虛擬機器劃分的三 年輕代年老代持久代

虛擬機器中的共劃分為三個代:         年輕代(Young Generation)、年老代(Old Generation)和持久代(Permanent  Generation)。其中持久代主要存放的是Java類的類資訊,與垃圾收集要收集的Java物件關係 不大。年輕代和年老代的劃分是對垃 圾收集影響

總結javascript基礎概念系列計劃分為部分作用域,事件循環,原型鏈。

嚴格模式 增加 throw 相互 語法錯誤 第一個 scope val 分析 主要問題: 1、javaScript代碼的編譯和執行過程,詞法作用域規則?2、this的動態綁定方式有幾種?3、全局和函數之外是不是還有其他的作用域?4、為什麽代碼規範多禁止with、eval?

雲棲專輯 | 阿里開發者們的第3感悟從身邊開源開始學習,用過才能更好理解程式碼

2015年12月20日,雲棲社群上線。2018年12月20日,雲棲社群3歲。 阿里巴巴常說“晴天修屋頂”。 在我們看來,寒冬中,最值得投資的是學習,是增厚的知識儲備。 所以社群特別製作了這個專輯——分享給開發者們20個彌足珍貴的成長感悟,50本書單。 多年以後,再回首2018-19年,留給我們自

記憶體分為部分?的區別

五大記憶體分割槽     在C++中,記憶體分成5個區,他們分別是堆、棧、自由儲存區、全域性/靜態儲存區和常量儲存區。     棧:就是那些由編譯器在需要的時候分配,在不需要的時候自動清楚的變數的儲存區。裡面的變數通常是區域性變數、函式引數等。     堆:就是那些由ne

少走彎路的3忠告產品經理不是來改變世界的

使用者不需要那麼多改變世界的英雄,使用者只期待好好做事的人。 對於剛入行的產品經理來說,首先要思考的,並不是如何去做一個改變世界的產品,而是想清楚,哪些體驗讓使用者感覺是負分? 新人產品經理首要思考的問題是:完善自身的知識體系,優化現存問題的體驗。 因此,新人們產品

記憶體優化的兩weakReference softReference

如果你想寫一個 Java 程式,觀察某物件什麼時候會被垃圾收集的執行緒清除,你必須要用一個 reference 記住此物件,以便隨時觀察,但是卻因此造成此物件的 reference 數目一直無法為零, 使得物件無法被清除。 java.lang.ref.WeakReferenc

多執行緒經常使用的3關鍵字synchronizedReentrantLockvolatile

3個關鍵字synchronized、ReentrantLock、volatile。 一、synchronized   互斥鎖,即操作互斥,併發執行緒過來,序列獲得鎖,序列執行程式碼。就像一個房間一把鑰匙,一個人進去後,下一個人得等第一個人出來得到鑰匙才能進入。如果程式

Java記憶體模型 之三特性

Java記憶體模型有三個特性:原子性、可見性、有序性。 這個三個特性主要體現在多執行緒環境下對變數的操作。這些變數包括:例項欄位、靜態欄位、構成陣列物件的元素。這些變數都儲存在堆中, 堆是執行緒共享的。那麼這些變數在多執行緒環境下就有可能出現所謂“執行緒不安

SSL連接分為階段握手和數據傳輸階段

tps 2.4 網絡 change 多少 number 系列 bit 客戶端 一、SSL概述SSL連接分為兩個階段:握手和數據傳輸階段。握手階段對服務器進行認證並確立用於保護數據傳輸的加密密鑰,必須在傳輸任何應用數據之前完成握手。一旦握手完成,數據就被分成一系列經過保護的記

項目組織結構的3種類型職能型項目型矩陣型

san 標準 .com 目的 posit 形式 優點 http 指標 職能型組織結構 職能型組織結構是目前最普遍的項目組織形式。它是一個標準的金字塔型組織形式,見圖 職能型組織結構是一種常規的線型組織結構。采用這種組織結構時,項目是以部門為主體來承擔項目的,一個項目由一個

寫一個程式,定義抽象基類Shape,由它派生出3派生類: Circle(圓形)Rectangle(矩形)Triangle(三角形)

 寫一個程式,定義抽象基類Shape,由它派生出3個派生類: Circle(圓形)、Rectangle(矩形)、Triangle(三角形),用一個函式printArea分別輸出以上三者的面積,3個圖形的資料在定義物件時給定。 #include<iostream> usi