国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

深入Java虛擬機之虛擬機體系結構

開發 后端
在日常工作中,程序員在維護和增加功能時程序的代碼越來越多,越來越臃腫了。于是,優化是必然的。作為一個完美的程序員,內存優化和性能調優已經是家常便飯了。

工作以來,代碼越寫越多,程序也越來越臃腫,效率越來越低,對于我這樣一個追求***的程序員來說,這是絕對不被允許的,于是除了不斷優化程序結構外,內存優化和性能調優就成了我慣用的“伎倆”。

要對Java程序進行內存優化和性能調優,不了解虛擬機的內部原理(或者叫規范更嚴謹一點)是肯定不行的,這里推薦一本好書《深入Java虛擬機(第二版)》(Bill Venners著,曹曉剛 蔣靖 譯,實際上本文正是作者閱讀本書之后,對Java虛擬機的個人理解闡述)。當然了,了解Java虛擬機的好處并不僅限于上述兩點好處。從更深一點的技術層面上看,了解Java虛擬機的規范和實現,將更加有助于我們編寫高效、穩定的Java代碼。比如,假如了解Java虛擬機的內存模型,了解虛擬機的內存回收機制,那么我們就不會過分依賴它,而會在需要的時候顯式的"釋放內存"(Java代碼不能顯式釋放內存,但是可以通過釋放對象引用告知垃圾回收器回收該對象需要被回收),以降低不必要的內存消耗;假如我們了解Java棧的工作原理,那么我們就可以通過減少遞歸層數,減少循環次數來降低堆棧溢出的風險。可能對于應用開發人員來說,可能不會直接去涉及這些Java虛擬機底層實現的工作,但是了解這些背景知識,或多或少,都會對我們寫的程序產生潛移默化的好的影響。

本篇文章,將簡明扼要的說明Java虛擬機的體系結構和內存模型,如有用詞不妥或解釋不準確之處,請不吝指正,深感榮幸!

Java 虛擬機體系結構

類裝載子系統

Java虛擬機有兩種類裝載器,分別是啟動類裝載器和用戶自定義裝載器。

通類裝載子系統通過類的全限定名(包名和類名,網絡裝載還包括 URL)將 Class 裝載進運行時數據區。對于每一個被裝載的類型,Java虛擬機都會創建一個java.lang.Class類的實例來代表該類型,該實例被放在內存中的堆區,而裝載的類型信息則位于方法區,這一點和所有其他對象都是一樣的。

類裝載子系統在裝載一個類型前,除了要定位和導入對應的二進制class文件外,還要驗證導入類的正確性,為類變量分配并初始化內存,以及解析符號引用為直接引用,這些動作嚴格按照以下順序進行:

1)裝載——查找并裝載類型的二進制數據;

2)連接——執行驗證,準備以及解析(可選)

3)驗證 確保被導入類型的正確性

4)準備 為類變量分配內存,并將其初始化為默認值

5)解析 把類型中的符號引用轉換為直接應用

方法區

對于每一個被類裝載子系統裝載的類型,虛擬機都會保存下列數據到方法區:

◆  類型的全限定名

◆ 類型超類的全限定名(java.lang.Object沒有超類)

◆ 類型是類類型還是接口類型

◆ 類型的訪問修飾符

◆ 任何直接超接口的全限定名有序列表

除了上述基本類型信息,還將保存如下信息:

◆ 類型的常量池

◆ 字段信息(包括字段名、字段類型、字段修飾符)

◆ 方法信息(包括方法名、返回類型、參數的數量和類型、方法修飾符,如果方法不是抽象和本地的,還將保存方法的字節碼、操作數棧和該方法棧幀中的局部變量區的大小和異常表)

◆ 常量以外的所有類變量(其實就是類的靜態變量,因為靜態變量是所有實例共享的,且與類型直接相關,所以他們是類一級的變量,作為類的成員被保存在方法區)

一個到類ClassLoader的引用

  1. //返回的就是剛才保存的ClassLoader引用   
  2. String.class.getClassLoader();  

一個到Class類的引用

  1. //將返回剛才保存的Class類的引用   
  2. String.class

注意,方法區也是可以被垃圾回收器回收的。

Java程序在運行時創建的所有類實例或數組都放在同一個堆中,而每一個Java虛擬機也是有一個對空間,所有線程共享一個堆(這就是一個多線程的Java程序會產生對象訪問的同步問題的原因了)。

由于每一種Java虛擬機都有對虛擬機規范的不同實現,所以我們可能不知道每一種Java虛擬機在堆中是以何種形式表示對象實例的,不過我們可以通過下面這可能的實現來一窺端倪:

 

程序計數器

對于運行中的Java程序而言,每一個線程都有自己的PC(程序計數器)寄存器,它是在該線程啟動時創建的,大小為一個字長,用來保存需要被執行的下一行代碼的位置。

Java棧

每一個線程都有一個Java棧,以棧幀為單位保存線程的運行狀態。虛擬機對Java棧的操作有兩種:壓棧和出棧,二者都已幀為單位。棧幀保存了傳入參數、局部變量、中間運算結果等數據,在方法完成時被彈出,然后釋放。

看一下兩個局部變量相加時棧幀的內存快照

 

本地方法棧

這是 Java 調用操作系統本地庫的地方,用來實現 JNI(Java Native Interface,Java 本地接口)

執行引擎

Java虛擬機的核心,控制裝入 Java 字節碼并解析;對于運行中的Java程序而言,每一個線程都是一個獨立的虛擬機執行引擎的實例,從線程生命周期的開始到結束,他要么在執行字節碼,要么在執行本地方法。

本地接口

連接了本地方法棧和操作系統庫。

注:文中所有提到"Java虛擬機"的地方都是指"JavaEE和JavaSE平臺的Java虛擬機規范"。

原文鏈接:http://yshjava.iteye.com/blog/1327778

【編輯推薦】

  1. Java與XML:采用DOM操作XML文件
  2. 從Java的角度理解Ext的extend
  3. Windows 64位環境的Java服務配置
  4. 利用JavaMail API 解析MIME
  5. 詳細解析Java中抽象類和接口的區別
責任編輯:林師授 來源: 楊勝寒的博客
相關推薦

2010-09-16 14:36:43

Java虛擬機

2016-03-02 15:09:57

Java虛擬機體系結構

2017-02-06 21:08:34

Android虛擬機體系結構

2011-11-30 14:12:05

JavaJVM虛擬機

2009-06-12 21:39:48

Java虛擬機體系結構Java虛擬機

2016-09-01 12:37:13

OpenStack虛擬機Metadata

2012-05-18 10:22:23

2012-11-14 09:57:46

JavaJava虛擬機JVM

2011-12-28 13:38:00

JavaJVM

2010-09-25 15:59:54

JVM虛擬機

2010-07-26 09:02:38

2013-07-17 09:32:58

2024-03-26 07:30:07

Java虛擬機源文件

2012-03-05 11:09:01

JavaClass

2024-03-29 11:42:21

Java虛擬機

2019-07-24 16:04:47

Java虛擬機并發

2020-06-18 16:39:10

KVM虛擬化虛擬機

2024-04-03 13:49:00

Java虛擬機方法區

2010-09-17 15:12:57

JVMJava虛擬機

2011-12-25 15:33:13

ibmdwKVM
點贊
收藏

51CTO技術棧公眾號

久久精品99久久久久久久久| 中文字幕剧情在线观看一区| 日本在线www| 国产在线视频一区二区三区| 国产一区视频观看| 亚洲影视一区| 日韩美女主播视频| 天天久久夜夜| 久久精品福利视频| 欧美三级理伦电影| 久久免费高清| 欧美成人国产va精品日本一级| av之家在线观看| 欧美成人午夜77777| 日韩精品一区二区三区四区视频| 欧美福利网站| 麻豆精品精品国产自在97香蕉| 欧美色图在线观看| 国产女大学生av| 人妖一区二区三区| 欧美精品精品精品精品免费| 一区二区日本伦理| 4438x亚洲最大成人网| 日韩av电影在线网| 成人精品在线| 欧美一区二区三区公司| 天堂√在线中文官网在线| 久久一区二区三区四区| 日本a级片在线观看| 日韩午夜免费视频| 国产精品va在线播放| 精品亚洲自拍| 久久99精品视频一区97| 成人在线中文| 中文字幕亚洲图片| 一二三四视频在线中文| 欧美一级夜夜爽| 性开放的欧美大片| 在线观看亚洲精品| 亚洲综合图区| 日韩欧美国产麻豆| 精品无人乱码一区二区三区| 亚洲欧美制服中文字幕| 99热99re6国产在线播放| 天天综合网天天做天天受| 色综合五月天导航| 粗大黑人巨茎大战欧美成人| 欧美日韩综合视频| 在线观看a视频| 717成人午夜免费福利电影| 一级片在线播放| 日韩三级视频在线看| av免费在线观看网站| 亚洲视频在线观看网站| 桃花岛tv亚洲品质| 国产人伦精品一区二区| 亚洲第一偷拍网| 自拍偷拍21p| 亚洲免费观看| 日产精品久久久一区二区| 蜜臀久久久99精品久久久久久| 先锋影音一区二区三区| 成人午夜精品在线| 男人天堂v视频| 日韩一区二区三区视频| 国产一区二区三区国产精品| 国产精品夜色7777狼人| 美腿丝袜亚洲综合| 国产福利在线免费| 欧美三片在线视频观看 | 污污网站在线| 亚洲国产精品va在线看黑人动漫 | 99天天综合性| 欧美老妇交乱视频| 国产乱淫av一区二区三区| 国产精品99久久免费黑人人妻| 久久成人在线| 亚洲成人性视频| 人人九九精品视频| 97超碰在线播放| 93久久精品日日躁夜夜躁欧美| 樱花在线免费观看| 在线电影欧美日韩一区二区私密 | 欧美亚洲综合在线| 成人深夜福利| 痴汉一区二区三区| 国产精品―色哟哟| 丰满大乳少妇在线观看网站| 26uuu亚洲伊人春色| 国内精品写真在线观看| 96久久久久久| 超碰91人人草人人干| 亚洲一级在线| 污黄视频在线看| 色妞欧美日韩在线| 久久先锋影音| 欧美xxx.com| 欧美亚洲另类制服自拍| 国产精品一区二区视频| √新版天堂资源在线资源| 97国产在线视频| 精久久久久久久久久久| yiren22亚洲综合伊人22| 欧美性资源免费| 99视频精品全部免费在线| 黄色免费在线看| 亚洲japanese制服美女| 国产精品九色蝌蚪自拍| 成人自拍视频网| 一区二区三区四区视频在线| 欧美亚洲日本一区| 精品国产一区一区二区三亚瑟 | 国产精品最新自拍| 色播在线视频| 欧美国产视频一区二区| 国产精品中文有码| 色呦呦在线看| 精品久久久久久一区| 精品久久久久久久久久久久久久| 最新精品在线| 老头吃奶性行交视频| 在线观看日韩专区| 国产成人综合在线播放| 日韩伦理精品| 五月天色婷婷综合| 日韩av一区在线观看| 日韩av一二三| 成人福利影视| 色姑娘综合网| 日韩午夜小视频| 国产日韩欧美高清免费| 91短视频版在线观看www免费| 亚洲综合最新在线| 欧美最猛性xxxxx直播| 欧美激情视频一区二区三区在线播放| 三年片观看免费观看大全视频下载| 欧美精品一区在线播放| 26uuu精品一区二区| 麻豆国产一区二区三区四区| 精品无码国产一区二区三区av| 精品国产百合女同互慰| 麻豆国产精品一区二区三区 | 极品尤物一区| 黄色漫画在线免费观看| 日本高清不卡在线| 亚洲精品乱码久久久久久| 蜜桃一区二区三区| 在线理论视频| 久久久一本精品99久久精品66| 欧美一区二区私人影院日本| 日一区二区三区| 成人片免费看| 国产aaa一级片| 国产精品盗摄久久久| 一本大道久久a久久综合婷婷 | 宅男在线观看免费高清网站| 欧美久久久久久一卡四| 日韩成人久久久| 99视频精品全部免费在线| 爽爽窝窝午夜精品一区二区| 午夜视频在线免费| 亚洲一二三区精品| 免费97视频在线精品国自产拍| 国产精品日韩成人| 女人天堂亚洲aⅴ在线观看| 欧美xxxx做受欧美88bbw| 91免费国产精品| 欧洲成人免费视频| 欧美日韩精品是欧美日韩精品| 日韩中文字幕一区二区三区| 精品欧美一区二区三区在线观看| 免费大片在线观看| 91免费版黄色| 有码中文亚洲精品| 午夜精品一区二区三区电影天堂| 日韩一区欧美二区| 91精品入口| 暖暖视频在线免费观看| 亚洲国产日韩综合一区| 欧美久久久精品| 日韩欧美在线视频| 国产一区二区三区香蕉| 亚州综合一区| 国产天堂在线播放视频| 在线免费观看av的网站| 国产一区二区在线观看免费播放| 在线观看日韩av| 在线观看亚洲成人| 久久综合久久综合亚洲| 免费拍拍拍网站| 国内偷自视频区视频综合| 欧美日韩国产色站一区二区三区| 国产乱码精品一区二区三区忘忧草| 国产传媒欧美日韩成人精品大片| 青草影视电视剧免费播放在线观看| 国产v亚洲v天堂无码久久久| 精品国产综合区久久久久久| 久久久久国色av免费观看性色| 欧美精品自拍偷拍动漫精品| 国产精品的网站|