亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

Java中類似于C語言中Sizeof功能實現(一)

2019-11-18 10:49:34
字體:
來源:轉載
供稿:網友

  1.java有類似于C語言中sizeof()的操作器嗎?
  表面答案是Java沒有提供任何類似于C語言的sizeof()的操作器。但是,我們應該想想為什么Java 程序員偶然也需要它。
  C語言程序員自己治理大多數的數據結構存儲分配,并且 sizeof()不負責了解分配的存儲塊的尺寸大小。C 存儲分配器如malloc(),只要涉及到對象初始化幾乎什么事都不做:程序員必須設置作為更深一層對象指針的所有對象域。但是當所有的都說過并且編碼過的時候, C/C++ 存儲分配是相當有效的。
  相比而言,Java對象分配和構造緊密結合(不可能使用一個已經分配但是沒有初始化的對象)。假如Java類定義了作為更深一層對象的引用的域,在構造階段設置他們也是很普遍的。Java對象分配器因此頻繁地分配互連對象:對象圖形。與自動垃圾收集耦合,所有這一切都太方便了,并且讓你覺得你根本不必擔心Java存儲分配的細節。
  當然,這只有對簡單的Java應用才有效。相比C/C++而言,同樣的Java數據結構往往占據更多的物理存儲。在企業軟件開發中,接近當今32位JVM上的最大虛擬存儲是一個普遍的可縮放性限制。因此,Java 程序員可從sizeof() 或者其他類似的函數中獲益,因為這些函數能夠觀察它的數據結構是否過大或者是否包含存儲瓶頸。幸運的是,Java反射答應你相當輕易的編寫這種工具。
  接下來,我先討論幾個經常出現的對該問題的錯誤理解。
  誤區1:因為Java類型的大小確定所以不需要 Sizeof()
  不錯,Java int在所有JVM和所有的平臺上都是32位,但是這只是一種語言規范要求,程序員可以接受的這種數據類型的寬度。這種int基本上是一種抽象的數據類型,并且可以被 64位設備上的64位存儲器字所支持。非初級的類型也不例外:Java語言規范根本沒有涉及這類問題:類域在物理存儲中應該如何校準或者布爾排列在JVM內部不能作為一個簡單的位向量來實現。
  誤區2: 將對象串行成一個位通量然后查看所產生的通量長度就可以測量對象的尺寸大小
  這個方法無效的原因就是串行布局只是真實存儲器內布局的遠程反射。舉例說,通過觀察String是如何串行的:在存儲器內每個char至少2個字節,但是在串行的格式中 String是UTF-8編碼的,所以任何ASCII內容只占了一半的空間。
  另外一個解決方式
  你可能想起在"Java Tip 130: Do You Know Your Data Size?"一文中描述了一個技巧:在創建大量的標記類的基礎上,仔細的測量在JVM使用的堆棧尺寸中所產生的增長。假如合適的話,這個技巧相當有用,實際上我在本文中也用它來引導備用的方法。
  注重:Java 技巧130中的類Sizeof需要一個靜態的JVM (這樣堆?;顒又荒苡蓽y量線程請求的對象分配和垃圾收集的操作引起),還需要大量的同一對象實例。假如你想測量單一大型對象(可能作為調試跟蹤輸出的一部分)的尺寸大小,非凡是假如你想測試出實際上是什么使他變得這么大的時候,這個方法就無效了。
  
  2.什么是對象的尺寸?
  上述討論突出了一個哲學問題:假設你經常處理對象圖形,那么對象尺寸的定義是什么呢?他是指你正在測量的對象實例的尺寸大小還是指根于對象實例的整個數據圖形?后者在實際生活中使用的更多一些。如你所見,事情不總是劃分得如此清楚,但是對于啟動程序來說你可以參照以下方法:
  · 一個對象的所有非靜態數據域(包括在超類中定義的域)的總和就是它的尺寸
  · 與C++不同,類方法以及他們的虛擬不影響對象的尺寸
  · 類超接口不影響對象尺寸(見該列表末尾的注釋)
  · 完整的對象尺寸可作為根于啟動對象的整個對象圖形的閉合來獲得
  注釋:實現任何Java接口只對懷疑類做標記,而且不添加任何數據到它的定義上。實際上, JVM 甚至不校驗接口實現有沒有提供接口所請求的所有方法:在目前的規范中,這嚴格說來是編譯器的責任。
  為了引導整個進程,對于初級數據類型,我使用Java 技巧130的Sizeof 類來測量物理尺寸。正如它所證實的一樣,對于普通的32位JVM來說,一個簡單的java.lang.Object 占了8位,并且基本數據類型通常都是能夠適應語言要求的最少的物理尺寸 (除了boolean 要占據整個字節之外):
  
  // java.lang.Object shell size in bytes:
  public static final int OBJECT_SHELL_SIZE  = 8;
  
  public static final int OBJREF_SIZE     = 4;
  public static final int LONG_FIELD_SIZE   = 8;
  public static final int INT_FIELD_SIZE   = 4;
  public static final int SHORT_FIELD_SIZE  = 2;
  public static final int CHAR_FIELD_SIZE   = 2;
  public static final int BYTE_FIELD_SIZE   = 1;
  public static final int BOOLEAN_FIELD_SIZE = 1;
  public static final int DOUBLE_FIELD_SIZE  = 8;
  public static final int FLOAT_FIELD_SIZE  = 4;
  
  (這些常量不是永遠硬編碼的,并且對于一個給定的JVM,它們必須獨立測量,熟悉到這一點很重要)當然,幼稚的計算對象域尺寸總和往往忽略了JVM中的存儲隊列問題。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久精品中文字幕电影| 国产精品扒开腿做爽爽爽的视频| 亚洲码在线观看| 亚洲精品在线看| 午夜精品一区二区三区在线视| 最近2019免费中文字幕视频三| 欧美精品制服第一页| 国产精品久久久久久久av电影| 久久免费国产视频| 国产小视频国产精品| 欧美亚洲另类在线| 日韩欧美在线视频日韩欧美在线视频| 国产精品女主播| 青青草国产精品一区二区| 欧美日韩国产成人在线| 日韩美女中文字幕| 精品中文字幕在线观看| 国产成人精品亚洲精品| 国产一区二区在线免费| 日韩欧美在线免费观看| 国产亚洲精品久久久久久牛牛| 久久久久久久电影一区| 亚洲成人亚洲激情| 欧美国产在线视频| 国产mv免费观看入口亚洲| 欧美日韩精品在线播放| 日韩精品在线观看一区| 欧美伦理91i| 日韩av手机在线| 国产亚洲欧美一区| 国产精品亚洲精品| 国产精品久久久久久久电影| 青青久久av北条麻妃海外网| 福利视频一区二区| 日韩中文字幕网站| 国产精品久久国产精品99gif| 日韩欧美极品在线观看| 国产原创欧美精品| 欧美国产高跟鞋裸体秀xxxhd| 欧美激情一区二区三区在线视频观看| 韩日精品中文字幕| 成人黄色av播放免费| 久久久久久久久国产精品| 最新69国产成人精品视频免费| 久久久久亚洲精品| 91av在线看| 欧洲亚洲免费视频| 久久久亚洲精选| 在线精品视频视频中文字幕| 国产精品专区h在线观看| 91精品国产777在线观看| 欧美激情在线观看视频| 亚洲国产精品久久久久久| 国产伦精品一区二区三区精品视频| 亚洲第一区中文99精品| 亚洲男人av电影| 精品国产一区二区三区四区在线观看| 中文字幕欧美日韩在线| 色与欲影视天天看综合网| 日韩中文字幕网站| 色婷婷亚洲mv天堂mv在影片| 亚洲精品电影久久久| 亚洲精品久久久久久久久久久久久| 美女久久久久久久| 69视频在线播放| 中文字幕亚洲综合久久| 亚洲午夜色婷婷在线| 欧美理论电影在线播放| 欧美大片在线免费观看| 国产欧美在线视频| 国产精品丝袜高跟| 欧美成人免费视频| 亚洲午夜小视频| 国产精品久久久久久久美男| 亚洲天堂2020| 亚洲精品第一页| 日韩一区视频在线| 色香阁99久久精品久久久| 日韩av综合网站| 欧美日韩中国免费专区在线看| 国产精品99久久久久久久久| 亚洲剧情一区二区| 国产97色在线|日韩| 亚洲精品第一页| 欧美激情国产日韩精品一区18| 日本一区二区三区四区视频| 久久久久久久av| 亚洲精品在线观看www| 亚洲视频电影图片偷拍一区| 国产视频精品在线| 亚洲精品免费av| 一区二区亚洲欧洲国产日韩| 91高清视频免费| 亚洲精品一区久久久久久| 欧美一区二区大胆人体摄影专业网站| 中文字幕国内精品| 欧美另类在线观看| 欧美精品精品精品精品免费| 国产精品久久久久久久久久小说| 欧美激情精品久久久久久大尺度| 亚洲r级在线观看| 亚洲一区美女视频在线观看免费| 亚洲精品自在久久| 亚洲性夜色噜噜噜7777| 欧美性高潮床叫视频| 久久韩剧网电视剧| 久久久久久午夜| 亚洲天堂男人天堂女人天堂| 最近中文字幕2019免费| 午夜精品99久久免费| 国产伦精品一区二区三区精品视频| 久久999免费视频| 国产精品99免视看9| 国产亚洲精品一区二555| 亚洲精品美女在线观看播放| 美女国内精品自产拍在线播放| 亚洲成人精品av| 一区二区三区四区精品| 国产视频久久网| 8050国产精品久久久久久| 91免费人成网站在线观看18| 91精品国产综合久久香蕉| 亚洲欧洲免费视频| 日韩av在线直播| 日韩中文字幕在线看| 91成人国产在线观看| 欧美福利在线观看| 亚洲激情久久久| 欧美丰满少妇xxxx| 亚洲一区中文字幕在线观看| 亚洲国产成人久久综合一区| 欧洲午夜精品久久久| 97超视频免费观看| 亚洲影影院av| 亚洲欧美在线一区二区| 久久亚洲精品中文字幕冲田杏梨| 成人在线视频网站| 青青a在线精品免费观看| 最新国产精品亚洲| 国产做受69高潮| 理论片在线不卡免费观看| 日韩精品中文字幕在线观看| 欧美成人亚洲成人日韩成人| 日本19禁啪啪免费观看www| 欧美性猛交xxxx| 欧美视频免费在线观看| 亚洲综合中文字幕在线| 亚洲石原莉奈一区二区在线观看| 日本成人精品在线| 国产精品福利在线观看| 欧美性猛交xxxx黑人| 亚洲美女在线观看| 亚洲人成五月天| 亚洲精品大尺度| 欧美乱人伦中文字幕在线| 国产综合在线观看视频| 亚洲国产精品免费| 亚洲黄色av女优在线观看| 国产精品美女www爽爽爽视频| 在线观看日韩av| 5278欧美一区二区三区| 欧美午夜美女看片| 久久久精品国产亚洲| 国产精品视频公开费视频|