日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java中用byte[]数组实现的队列和用Byte[]实现的队列实际占用空间对比

發布時間:2024/4/15 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java中用byte[]数组实现的队列和用Byte[]实现的队列实际占用空间对比 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

我用byte[]實現了一個隊列,創建對象,也用ArrayBlockingQueue<Byte>創建對象,添加10M個byte/Byte后通過對象流輸出到文件,文件的大小可以代表對象的大小,一探java裝箱額外占用空間的大小。

測試代碼:

import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.ObjectOutputStream; import java.util.Queue; import java.util.Scanner; import java.util.concurrent.ArrayBlockingQueue;import com.idealisan.structure.ArrayBlockingByteValueQueue;public class TestMen {static int capacity = 1024 * 1024 * 10;public static void main(String[] args) {ArrayBlockingQueue<Byte> pointerQueue = new ArrayBlockingQueue<Byte>(capacity);ArrayBlockingByteValueQueue valueQueue = new ArrayBlockingByteValueQueue(capacity);fillQueue(valueQueue);FileOutputStream os;try {os = new FileOutputStream(new File("F:/ttt/value10.dat"));ObjectOutputStream oos = new ObjectOutputStream(os);oos.writeObject(valueQueue);oos.flush();oos.close();os.flush();os.close();} catch (Exception e) {// TODO Auto-generated catch block e.printStackTrace();}valueQueue = null;fillQueue(pointerQueue);try {os = new FileOutputStream(new File("F:/ttt/pointer10.dat"));ObjectOutputStream oos = new ObjectOutputStream(os);oos.writeObject(pointerQueue);oos.flush();oos.close();os.flush();os.close();} catch (Exception e) {// TODO Auto-generated catch block e.printStackTrace();}pointerQueue = null;}private static void fillQueue(Queue<Byte> queue) {while (queue.size() < capacity) {queue.offer(new Byte((byte) 1));}} }

最后的結果是裝箱的Byte多使用了600%的空間,當然,一般不會有10M個對象那么多,也很少會讓每個字節成為一個單獨的對象,太浪費空間了。其中值類型的byte也額外使用了大約1kB的空間,應該是用于存放容器對象的信息。

?

轉載于:https://www.cnblogs.com/memoryLost/p/11114883.html

總結

以上是生活随笔為你收集整理的java中用byte[]数组实现的队列和用Byte[]实现的队列实际占用空间对比的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。