<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    常用鏈接

    統計

    最新評論

    java中的sizeof(轉)

    16位機器,c++,sizeof(int)=2byte長度
    32位機器,c++,sizeof(int)=4byte長度
     在C/C++中,當我們想知道一個對象或者一個原始數據類型所占用的內存大小時,只需簡單調用sizeof操作符即可,但是,在java中是沒有相應的操作符或者方法來直接完成相應功能的。sizeof 在C/C++得到大量的運用,是程序員必不可少的工具之一,那么為什么java卻不提供呢?要回答這個問題,我們可以從另外一個角度來看,那就是為什么C/C++中要使用sizeof。C中要使用sizeof主要是因為C程序員要自己管理堆內存的分配和釋放,在使用malloc來獲取堆內存時,我們必須知道要創建的對象的具體大小,才能根據對象的具體大小從堆中分配相應大小的動態內存,而獲取對象大小這個工作就是通過sizeof來完成的。到了C++,我們可以使用操作符new來動態分配內存,這時,對于sizeof的依賴也沒有在C時代時那么嚴重了。在C++中保留sizeof,主要是為了跟C保持兼容。說到這里,我們也可以明白為什么java中為什么沒有sizeof了:java中的內存管理任務直接交給了JVM,這比C++更為徹底。同時,java是一個全新設計的完全面向對象語言,不存在C++向下兼容的問題,因此,java中不存在類似sizeof的操作符。(存在即合理,不存在也有它的道理:))。
        但是,有些時候事情并不沒有想象中那么簡單。當我們用Java編寫應用程序時,雖然很多時候我們都不需要了解內存的使用情況,因為JVM已經幫我們照顧好這些珍貴的資源,但是,某些時候,譬如我們要編寫一個性能監測工具或者在調試時我們需要知道某個對象所占用的內存大小的。怎么辦呢?是不是很懷念我們的sizeof呢。
       不用擔心,所謂天無絕人之路。如果我們使用的JDK的版本是5.0或以上,那么,我們可以使用新提供的Instrument包。通過這個包提供的接口和類,我們可以很容易獲取一個對象實際占用的內存大小。Instrument的具體描述可以參看JDK文檔,【1】提供了一個很好的例子。
       但是,上述方法只能獲取對象的占用內存的大小,對于int ,long等原始類型是沒有辦法得知其內存大小的。有的人可能會問,這些原始類型在java的specification中定義好的嗎?我們都知道,int用4個字節,long占用8個字節。對,java規范是對原是類型的大小作出了定義,但是這僅僅是對該類型邏輯上所需的字節作出了規定,具體到每個JVM實現中用到的實際內存大小是沒有限制的,我們完全可以實現一個JVM使用8個字節來保存一個int(不知道現在64位CPU機子上是不是使用8個字節(64位)來保存一個int,我這里沒有機器可以進行試驗)。因此,要知道一個原始類型到底占用多少內存,我們還需另外想辦法。【2】【3】【4】【5】提供了相關的信息,有興趣的朋友可以參考一下。這里,貼出各個基本類型所占用內存的實際大小,看跟你想象中是否一致。(from 【5】Sun JRE 1.4.2 Client Hotspot JVM on Windows)
    Type Size (bytes)
    java.lang.Object 8
    java.lang.Float 16
    java.lang.Double 16
    java.lang.Integer 16
    java.lang.Long 16
    java.math.BigInteger 56 (*)
    java.lang.BigDecimal 72 (*)
    java.lang.String
    2*(Length) + 38 ± 2
    empty java.util.Vector
    80
    object reference
    4
    float array
    4*(Length) + 14 ± 2

    posted on 2009-06-24 17:02 九寶 閱讀(410) 評論(0)  編輯  收藏 所屬分類: Java

    主站蜘蛛池模板: 深夜福利在线免费观看| 亚洲av无码国产精品夜色午夜| 亚洲黄色中文字幕| 99久久婷婷免费国产综合精品| 最新精品亚洲成a人在线观看| 麻豆69堂免费视频| 亚洲人妻av伦理| 国产免费区在线观看十分钟 | 国产成人免费爽爽爽视频| 国产精品亚洲精品| 亚洲Av熟妇高潮30p| 可以免费观看的毛片| 精品亚洲A∨无码一区二区三区| 久久久久久久久久国产精品免费| 亚洲男人都懂得羞羞网站| 中国xxxxx高清免费看视频| 亚洲乱人伦精品图片| 青青青青青青久久久免费观看| 国产亚洲精品成人久久网站| 亚洲av成人一区二区三区在线观看| 一区二区三区免费在线观看| 国产成人无码综合亚洲日韩| 最近2019免费中文字幕6| 亚洲色精品VR一区区三区 | 久久精品国产96精品亚洲| 在线日本高清免费不卡| 亚洲狠狠成人综合网| 免费国产不卡午夜福在线| a级毛片免费全部播放| 亚洲国产高清视频在线观看| 日本高清色本免费现在观看| 亚欧洲精品在线视频免费观看| 久久精品国产亚洲AV香蕉| 国产午夜免费秋霞影院| 国产一区二区三区免费| 亚洲依依成人精品| 亚洲一区无码精品色| 国产91免费在线观看| 一级毛片试看60分钟免费播放 | 亚洲人成网男女大片在线播放| 免费看男女下面日出水视频|