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

JVM調優總結:一些概念

開發 后端
Java虛擬機中,數據類型可以分為兩類:基本類型和引用類型?;绢愋偷淖兞勘4嬖贾?,即:他代表的值就是數值本身;而引用類型的變量保存引用值

數據類型

Java虛擬機中,數據類型可以分為兩類:基本類型和引用類型?;绢愋偷淖兞勘4嬖贾担矗核淼闹稻褪菙抵当旧?;而引用類型的變量保存引用值。“引用值”代表了某個對象的引用,而不是對象本身,對象本身存放在這個引用值所表示的地址的位置。

基本類型包括:byte,short,int,long,char,float,double,Boolean,returnAddress

引用類型包括:類類型,接口類型和數組。

堆與棧

堆和棧是程序運行的關鍵,很有必要把他們的關系說清楚。

棧是運行時的單位,而堆是存儲的單位。

棧解決程序的運行問題,即程序如何執行,或者說如何處理數據;堆解決的是數據存儲的問題,即數據怎么放、放在哪兒。

在Java中一個線程就會相應有一個線程棧與之對應,這點很容易理解,因為不同的線程執行邏輯有所不同,因此需要一個獨立的線程棧。而堆則是所有線程共享的。棧因為是運行單位,因此里面存儲的信息都是跟當前線程(或程序)相關信息的。包括局部變量、程序運行狀態、方法返回值等等;而堆只負責存儲對象信息。

為什么要把堆和棧區分出來呢?棧中不是也可以存儲數據嗎?

***,從軟件設計的角度看,棧代表了處理邏輯,而堆代表了數據。這樣分開,使得處理邏輯更為清晰。分而治之的思想。這種隔離、模塊化的思想在軟件設計的方方面面都有體現。

第二,堆與棧的分離,使得堆中的內容可以被多個棧共享(也可以理解為多個線程訪問同一個對象)。這種共享的收益是很多的。一方面這種共享提供了一種有效的數據交互方式(如:共享內存),另一方面,堆中的共享常量和緩存可以被所有棧訪問,節省了空間。

第三,棧因為運行時的需要,比如保存系統運行的上下文,需要進行地址段的劃分。由于棧只能向上增長,因此就會限制住棧存儲內容的能力。而堆不同,堆中的對象是可以根據需要動態增長的,因此棧和堆的拆分,使得動態增長成為可能,相應棧中只需記錄堆中的一個地址即可。

第四,面向對象就是堆和棧的***結合。其實,面向對象方式的程序與以前結構化的程序在執行上沒有任何區別。但是,面向對象的引入,使得對待問題的思考方式發生了改變,而更接近于自然方式的思考。當我們把對象拆開,你會發現,對象的屬性其實就是數據,存放在堆中;而對象的行為(方法),就是運行邏輯,放在棧中。我們在編寫對象的時候,其實即編寫了數據結構,也編寫的處理數據的邏輯。不得不承認,面向對象的設計,確實很美。

在Java中,Main函數就是棧的起始點,也是程序的起始點。

程序要運行總是有一個起點的。同C語言一樣,java中的Main就是那個起點。無論什么java程序,找到main就找到了程序執行的入口:)

堆中存什么?棧中存什么?

堆中存的是對象。棧中存的是基本數據類型和堆中對象的引用。一個對象的大小是不可估計的,或者說是可以動態變化的,但是在棧中,一個對象只對應了一個4btye的引用(堆棧分離的好處:))。

為什么不把基本類型放堆中呢?因為其占用的空間一般是1~8個字節——需要空間比較少,而且因為是基本類型,所以不會出現動態增長的情況——長度固定,因此棧中存儲就夠了,如果把他存在堆中是沒有什么意義的(還會浪費空間,后面說明)。可以這么說,基本類型和對象的引用都是存放在棧中,而且都是幾個字節的一個數,因此在程序運行時,他們的處理方式是統一的。但是基本類型、對象引用和對象本身就有所區別了,因為一個是棧中的數據一個是堆中的數據。最常見的一個問題就是,Java中參數傳遞時的問題。

Java中的參數傳遞時傳值呢?還是傳引用?

要說明這個問題,先要明確兩點:

1. 不要試圖與C進行類比,Java中沒有指針的概念

2. 程序運行永遠都是在棧中進行的,因而參數傳遞時,只存在傳遞基本類型和對象引用的問題。不會直接傳對象本身。

明確以上兩點后。Java在方法調用傳遞參數時,因為沒有指針,所以它都是進行傳值調用(這點可以參考C的傳值調用)。因此,很多書里面都說Java是進行傳值調用,這點沒有問題,而且也簡化的C中復雜性。

但是傳引用的錯覺是如何造成的呢?在運行棧中,基本類型和引用的處理是一樣的,都是傳值,所以,如果是傳引用的方法調用,也同時可以理解為“傳引用值”的傳值調用,即引用的處理跟基本類型是完全一樣的。但是當進入被調用方法時,被傳遞的這個引用的值,被程序解釋(或者查找)到堆中的對象,這個時候才對應到真正的對象。如果此時進行修改,修改的是引用對應的對象,而不是引用本身,即:修改的是堆中的數據。所以這個修改是可以保持的了。

對象,從某種意義上說,是由基本類型組成的??梢园岩粋€對象看作為一棵樹,對象的屬性如果還是對象,則還是一顆樹(即非葉子節點),基本類型則為樹的葉子節點。程序參數傳遞時,被傳遞的值本身都是不能進行修改的,但是,如果這個值是一個非葉子節點(即一個對象引用),則可以修改這個節點下面的所有內容。

堆和棧中,棧是程序運行最根本的東西。程序運行可以沒有堆,但是不能沒有棧。而堆是為棧進行數據存儲服務,說白了堆就是一塊共享的內存。不過,正是因為堆和棧的分離的思想,才使得Java的垃圾回收成為可能。

Java中,棧的大小通過-Xss來設置,當棧中存儲數據比較多時,需要適當調大這個值,否則會出現java.lang.StackOverflowError異常。常見的出現這個異常的是無法返回的遞歸,因為此時棧中保存的信息都是方法返回的記錄點。

Java對象的大小

基本數據的類型的大小是固定的,這里就不多說了。對于非基本類型的Java對象,其大小就值得商榷。

在Java中,一個空Object對象的大小是8byte,這個大小只是保存堆中一個沒有任何屬性的對象的大小??聪旅嬲Z句:

  1. Object ob = new Object(); 

這樣在程序中完成了一個Java對象的生命,但是它所占的空間為:4byte+8byte。4byte是上面部分所說的Java棧中保存引用的所需要的空間。而那8byte則是Java堆中對象的信息。因為所有的Java非基本類型的對象都需要默認繼承Object對象,因此不論什么樣的Java對象,其大小都必須是大于8byte。

有了Object對象的大小,我們就可以計算其他對象的大小了。

  1. Class NewObject {  
  2.    int count;  
  3.    boolean flag;  
  4.    Object ob;  
  5.    }  
  6. //其大小為:空對象大小(8byte)+int大小(4byte)+Boolean大小(1byte)+空Object引用的大小(4byte)=17byte。
  7. 但是因為Java在對對象內存分配時都是以8的整數倍來分,因此大于17byte的最接近8的整數倍的是24,因此此對象的大
  8. 小為24byte。 

這里需要注意一下基本類型的包裝類型的大小。因為這種包裝類型已經成為對象了,因此需要把他們作為對象來看待。包裝類型的大小至少是12byte(聲明一個空Object至少需要的空間),而且12byte沒有包含任何有效信息,同時,因為Java對象大小是8的整數倍,因此一個基本類型包裝類的大小至少是16byte。這個內存占用是很恐怖的,它是使用基本類型的N倍(N>2),有些類型的內存占用更是夸張(隨便想下就知道了)。因此,可能的話應盡量少使用包裝類。在JDK5.0以后,因為加入了自動類型裝換,因此,Java虛擬機會在存儲方面進行相應的優化。

引用類型

對象引用類型分為強引用、軟引用、弱引用和虛引用。

強引用:就是我們一般聲明對象是時虛擬機生成的引用,強引用環境下,垃圾回收時需要嚴格判斷當前對象是否被強引用,如果被強引用,則不會被垃圾回收

軟引用:軟引用一般被做為緩存來使用。與強引用的區別是,軟引用在垃圾回收時,虛擬機會根據當前系統的剩余內存來決定是否對軟引用進行回收。如果剩余內存比較緊張,則虛擬機會回收軟引用所引用的空間;如果剩余內存相對富裕,則不會進行回收。換句話說,虛擬機在發生OutOfMemory時,肯定是沒有軟引用存在的。

弱引用:弱引用與軟引用類似,都是作為緩存來使用。但與軟引用不同,弱引用在進行垃圾回收時,是一定會被回收掉的,因此其生命周期只存在于一個垃圾回收周期內。

強引用不用說,我們系統一般在使用時都是用的強引用。而“軟引用”和“弱引用”比較少見。他們一般被作為緩存使用,而且一般是在內存大小比較受限的情況下做為緩存。因為如果內存足夠大的話,可以直接使用強引用作為緩存即可,同時可控性更高。因而,他們常見的是被使用在桌面應用系統的緩存。

原文鏈接:http://pengjiaheng.iteye.com/blog/518623

【編輯推薦】

  1. 用Java GUI編寫的畫板程序
  2. Java的動態綁定機制
  3. jOOQ 2.0.2發布 Java的ORM框架
  4. JavaFX 2012:徹底開源
  5. Java中帶復選框的樹的實現和應用

 

責任編輯:林師授 來源: 和你在一起的博客
相關推薦

2012-01-10 14:35:08

JavaJVM

2012-01-10 15:13:56

JavaJVM

2010-09-25 13:05:07

JVM參數

2012-01-10 14:18:40

JavaJVM

2010-09-26 13:48:51

JVM調優

2019-12-20 14:21:26

JVM調優垃圾回收

2012-01-09 16:53:36

JavaJVM

2011-09-13 09:41:59

Python

2017-07-21 08:55:13

TomcatJVM容器

2023-11-11 19:07:23

JVMJava

2012-01-10 11:19:35

JavaJVM

2021-03-17 11:35:11

JVM代碼Java

2012-01-09 17:06:16

JavaJVM

2012-01-10 14:25:36

JavaJVM

2010-09-26 13:39:46

JVM調優

2010-09-26 09:08:17

JVM調優

2009-06-18 14:54:52

Spring AOP

2017-09-22 15:15:23

jvm調優命令

2017-10-17 14:02:30

jvm調優工具

2021-06-03 08:32:18

JVM調優虛擬機
點贊
收藏

51CTO技術棧公眾號

亚洲福利视频网| 欧美日韩视频免费播放| 最近2019中文字幕在线高清| 国产免费专区| 美女爽到呻吟久久久久| 韩日欧美一区二区| 国产精品电影| 欧美又粗又大又爽| 成人xxx免费视频播放| 蜜臀久久久久久久| 亚洲一区二区久久久久久久| 伊人久久大香线蕉av超碰| 亚洲第五色综合网| 午夜视频成人| 大桥未久av一区二区三区| 欧美大尺度做爰床戏| 国产成人a级片| 五码日韩精品一区二区三区视频| 911久久香蕉国产线看观看| 91高清视频在线免费观看| 川上优av中文字幕一区二区| 欧洲激情一区二区| 国产三级av在线| 国产精品视频你懂的| 黄色片网址在线观看| 久久国产精品色婷婷| 久久精品国产美女| 亚洲天天综合| 成人免费网站在线看| 亚欧日韩另类中文欧美| 欧美大胆人体bbbb| av免费在线免费观看| 欧美亚洲尤物久久| 黄色片在线看| 色偷偷成人一区二区三区91| 黄色高清在线观看| 亚洲一区二区三区精品在线| 2019一级黄色毛片免费看网| 国产精品视频在线看| 91av俱乐部| 中文字幕二三区不卡| www.精品在线| 亚洲综合在线观看视频| eeuss一区| 欧美性猛交xxxx乱大交蜜桃 | 91成人在线网站| 视频一区国产视频| 四虎永久在线| 在线精品视频小说1| 91久久爱成人| 久久中文亚洲字幕| 日韩美女视频在线观看| 亚洲国产一区二区三区青草影视| avtt天堂资源网| 国际精品欧美精品| 国产激情综合五月久久| 九九久久婷婷| 91日韩在线视频| 日韩一二三区视频| 成人国产精品久久| 国产成人97精品免费看片| 久久精品播放| 色综合久久av| 国产1区2区3区精品美女| 艳母动漫在线观看| 欧美狂欢多p性派对| 日本老熟妇毛茸茸| 中文幕av一区二区三区佐山爱| 日韩网站免费观看| 精品国产乱子伦一区二区| 国产成人亚洲综合| 亚洲网站在线| 女女同性女同一区二区三区按摩| 成人晚上爱看视频| www99热| 一本一本大道香蕉久在线精品 | 国产午夜精品麻豆| 欧洲精品在线观看| 少妇视频在线观看| 99久久免费精品国产72精品九九| 久久中文久久字幕| 久久这里只有精品一区二区| 亚洲已满18点击进入在线看片| 日韩高清一区二区| 亚洲不卡视频在线| 欧美裸体一区二区三区| 国产夫妻在线播放| 国内外成人免费激情在线视频| 欧美激情一级片一区二区| 午夜午夜精品一区二区三区文| 久久久99久久精品欧美| 日本午夜在线视频| 综合欧美国产视频二区| 国产欧美日韩精品一区二区三区 | gogo大胆日本视频一区| 超碰在线公开97| 欧美精品日韩精品| 国产精品一区二区三区av| 成人欧美一区二区三区黑人孕妇 | 国产成人亚洲综合91| 好吊日精品视频| 黄色www网站| 国产亚洲精彩久久| 一区二区三区**美女毛片| 日本在线视频www鲁啊鲁| 色一情一乱一伦一区二区三区丨| 国产91一区| 在线免费观看成人网| 国产精品理伦片| 福利在线导航136| 日本午夜人人精品| 国产做a爰片久久毛片| 麻豆电影在线观看| 最近2019中文字幕一页二页| 伊人久久大香线蕉综合热线 | 久草在线资源站资源站| 欧美亚洲成人xxx| 久久99久久99精品免视看婷婷 | 欧美成人一区二区三区电影| av不卡免费看| 毛片视频免费| 亚洲香蕉av在线一区二区三区| 黄色精品网站| 中文字幕校园春色| 久久精品人人做人人爽| 久久综合五月| 成人免费一区二区三区视频网站| 国内成人精品视频| 国产成a人亚洲精| 在线heyzo| 国产精品裸体一区二区三区| 亚洲精品国产a| 狼人精品一区二区三区在线| 五月丁香综合缴情六月小说| 精品女同一区二区| 一区二区三区四区五区在线 | 亚洲男人天堂网| 国产亚洲网站| 日韩在线无毛| 国产欧美日韩91| 久久免费在线观看| 亚洲第一综合天堂另类专| 亚洲精品一区二区三区精华液| 久久精品国产一区二区| 最新日韩一区| 亚州av影院| 国产伦精品一区二区三区高清| 伊人天天久久大香线蕉av色| 一本一本久久a久久精品综合麻豆| 毛片av一区二区| 色乱码一区二区三区熟女| 在线观看亚洲a| 久久密一区二区三区| 草草久视频在线观看电影资源| 欧美成人免费全部| 久久久久久久综合日本| 清纯唯美激情亚洲| 欧美性久久久久| 美女国内精品自产拍在线播放| 99热精品国产| 日韩中文字幕一区二区高清99| av片中文字幕| 亚洲3p在线观看| 一区二区三区欧美激情| 精品视频免费| 番号集在线观看| 精品中文字幕人| 欧美精品一区二区三区四区 | 欧美亚洲愉拍一区二区| 国产精品99一区二区| 国产福利在线看| 欧美日韩免费高清| 亚洲第一区在线观看| 九九久久精品视频| 国产成人免费精品| 成人在线播放网站| 成人久久久久久久| 欧美精品电影在线播放| 蜜臀久久久99精品久久久久久| 性欧美videohd高精| 成人综合视频在线| 日韩av片永久免费网站| 天天色图综合网| 99精品视频免费观看视频| 999精品网| 少妇高潮久久77777| 天天久久人人| 日韩欧美一级在线| 波多野吉衣av| 国产精美视频| 精品91自产拍在线观看一区| 首页欧美精品中文字幕| 日本乱码一区二区三区不卡| av网站大全免费| 久久久久久久影院| 色综合久久久久久久| 天堂蜜桃一区二区三区| 福利一区和二区| 日本午夜免费福利视频| 国产精品久久久久久久久婷婷|