『壹』 java 中new一個對象佔多少內存
Object
o=new
Object():
在java中空對象佔八個位元組,對象的引用佔四個位元組。所以上面那條語句所佔的空間是4byte+8byte=12byte.java中的內存是以8的倍數來分配的,所以分配的內存是16byte.
舉個例子:
Class
O{
int
i;
byte
j;
String
s;
}
其所佔內存的大小是空對象(8)+int(4)+byte(1)+String引用(4)=17byte,因要是8的整數倍,所以其佔大小為24byte.
當然,如果類里有其他對象的話,也要把其他對象的空間算進去。
其實這個在javaeye的電子期刊上有。
『貳』 java中string多少個位元組
從String的源代碼我們可以得知類String中是使用域 count 來
記錄對象字元的數量,而count 的類型為 int,因此,我們可以推測最長的長度
為 2^32,也就是4G。如果是ASCII 碼的話最多隻能有 65534 位元組,utf8編碼的話最多是65536 個位元組。
『叄』 誰跟我說說在C,C++,JAVA中int,char,各占幾個位元組好么
C/C++中的int佔4個位元組,char佔1個位元組;Java中的int佔4個位元組,char卻佔1~6個位元組,要根據使用的編碼和具體字元而定。
目前在一般的電腦中,int佔用4位元組,32比特,數據范圍為-2147483648~2147483647,也就是-2^31~2^31-1。
C/C++,char是單字元數據類型,只佔1個位元組。
Java中,內碼(運行內存)的char使用UTF16的方式編碼,一個char佔用兩個位元組,但是某些字元需要兩個char來表示。所以,一個字元會佔用2個或4個位元組。
Java中,外碼中char使用UTF8的方式編碼,一個字元佔用1~6個位元組。
(3)java對象位元組數擴展閱讀:
Java和C++的差異:
Java看起來設計得很像C++,但是為了使語言小和容易熟悉,設計者們把C++語言中許多可用的特徵去掉了,這些特徵是一般程序員很少使用的。例如,Java不支持go to語句,代之以提供break和continue語句以及異常處理。
Java還剔除了C++的操作符過載(overload)和多繼承特徵,並且不使用主文件,免去了預處理程序。因為Java沒有結構,數組和串都是對象,所以不需要指針。
Java能夠自動處理對象的引用和間接引用,實現自動的無用單元收集,使用戶不必為存儲管理問題煩惱,能更多的時間和精力花在研發上。
『肆』 如何計算Java對象所佔內存的大小
java中可以用.getBytes().length獲取字元串佔用內容的大小,原理是java中任何字元都採用Unicode編碼,所以衡量佔用內存大小採用佔用的位元組數。
舉例如下:
public
class
TestStringSize
{
public
static
final
void
main(String[]
args)
{
System.out.println("佔用內存大小:"+"學java".getBytes().length);
}
}
輸出結果:
佔用內存大小:6
byte
『伍』 一個Java對象到底佔多大內存
第一問中,integer,Double是可以准確知道大小的 java中int double(包裝類分別是Integer和Double,實際是一樣的)分別佔用的大小是4B 和8B 這里說的B,就是我們通常說的KB中的那個B,全稱是Byte。 1B = 8bit。 所以我們通常會說int是32位,有時候又4位元組 而String他是有char數組組成,一個長度為10的String,佔用的char就是10個,一個char是2B。 所以看String佔多少內存,需要知道String的長度 二問中:答案是可以的 摘自ObjectOutPutStream的API說明 FileOutputStream fos = new FileOutputStream("t.tmp"); ObjectOutputStream oos = new ObjectOutputStream(fos); oos.writeInt(12345); oos.writeObject("Today"); oos.writeObject(new Date()); oos.close();
『陸』 java中String占幾個位元組
Java中無論是漢字還是英文字母都是用Unicode編碼來表示的,一個Unicode碼是16位,每位元組是8位,所以一個Unicode碼占兩位元組。但是英文字母比較特殊,源自於8位(1位元組)的ASCII嗎,於是在Unicode碼僅使用了低8位(1位元組)就可以表示,高8位的話不使用也無所謂。所以
char
c='a';
System.out.println(c.getBytes().lenth()),得到的是1(位元組)
但漢字就完整地使用了16位(2位元組)的Unicode,所以
char
c='中';
System.out.println(c.getBytes().lenth()),得到的是2(位元組)
綜上,c='a'在內存中確實只佔1位元組,但這不意味著String
s="abc"在內存中只佔3位元組。應該這么說,String
s="abc"至少在內存中佔3位元組。這是因為char是基本數據類型,而String確是對象類型。
『柒』 一個Java對象到底佔用多大內存
Object o=new Object():
在java中空對象佔八個位元組,對象的引用佔四個位元組。所以上面那條語句所佔的空間是4byte+8byte=12byte.java中的內存是以8的倍數來分配的,所以分配的內存是16byte.
舉個例子:
Class O{
int i;
byte j;
String s;
}
其所佔內存的大小是空對象(8)+int(4)+byte(1)+String引用(4)=17byte,因要是8的整數倍,所以其佔大小為24byte.
當然,如果類里有其他對象的話,也要把其他對象的空間算進去
『捌』 java語言中Bigdecimal類型佔用多少個位元組
非基本類型BigDecimal引用的對象佔用的位元組數是可變的,具體大小依賴於你輸入的數據量,要求的精度和選擇的舍入方法。如果你問的是類型為BigDecimal的引用變數佔用的位元組數,那隻有一個指針變數的大小,目前為4。如果還不懂,請看例子:
BigDecimal d=new BigDecimal(1.1);
這里調用BigDecimal的構造函數創建了一個BigDecimal對象,定義d是一個指向這個BigDecimal對象的引用(即用d來保存這個對象的地址),d的大小是4位元組,而隨著不斷地進行計算,譬如通過調用add方法累加更多的大的數據到d指向的對象,這個對象佔用的內存會越來越大,它佔用的內存大小不固定。
『玖』 一個java對象佔多少個位元組的總結和理解
根本沒必要考慮這個問題。一個對象佔100位元組和99位元組對你有區別嗎?只要別無腦堆對象就可以,對象太多程序效率低下。