http://www.vxbq.cn/db/數據在Java占用內存簡單估算
結論:
1.http://www.vxbq.cn/db/記錄放在JAVA里,用對象(ORM1般的處理方式)需要4倍左右的內存空間,用HashMap這類KV保存需要10倍空間;
2.如果你主要數據是text大文本,那空間1般可以按2倍估算。
以上是1個通用數據測試結論,估大家參考。
http://www.vxbq.cn/db/記錄占用的空間大小比較好算,比如1個int占用4字節,bigint占用8字節,date占用3字節,datetime占用8字節,varchar是變長字節等。如果不想精確計算,在http://www.vxbq.cn/db/中通過統計信息也能夠比較輕松的知道表總共占用的空間及每條記錄平均行長。
當我們用JDBC訪問http://www.vxbq.cn/db/時,常常會被問到內存溢出的問題,由于java是面向對象的語言,用JVM來自動內存回收,不能按普通方法計算內存,本文給出1個估算內存的思路和參考答案
先給出普通JDBC中http://www.vxbq.cn/db/對象與內存的映照關系
MySQL |
http://www.vxbq.cn/oracle/ |
JDBC |
Int |
Integer |
|
Int unsigned |
Long |
|
BigInt |
Long |
|
BigInt unsigned |
BigInteger |
|
Decimal |
Number |
BigDecimal |
Varchar |
Varchar2 |
String |
Date |
Date |
|
Datetime |
Date |
Timestamp |
Timestamp |
Timestamp |
Timestamp |
Clob |
Clob |
String |
Blob |
blob |
Byte[] |
Text |
Clob |
String |
float |
binary_float |
float |
double |
binary_double |
double |
上面這個比較好理解,接下來我們需要JAVA經常使用對象的內存占用空間,這個可以通過JDK 5 開始提供的Instrumentation 接口來完成,也能夠通過開源的sizeOf.jar 來測試,筆者是通過sizeOf.jar驗證的。測試結果數據以下:
對象 |
64位 JVM 緊縮指針 |
64位 JVM 非緊縮指針 |
Integer |
16 |
24 |
Long |
24 |
24 |
Object |
16 |
16 |
Date |
24 |
32 |
Timestamp |
32 |
40 |
String_0 |
48 |
64 |
String_1 |
56 |
72 |
String_10 |
72 |
88 |
String_100 |
248 |
264 |
StringBuilder |
24 |
32 |
BigDecimal |
40 |
48 |
BigInteger |
64 |
80 |
HashMap |
128 |
216 |
HashMap_0 |
72 |
生活不易,碼農辛苦
------分隔線----------------------------
上一篇 Cocos2d-X使用CCAnimation創建動畫 下一篇 水平三欄式布局 分享到:
------分隔線----------------------------
|