javax.activation.DataSource大小问题
如何获得(特别是-)所消耗的物理内存量?我使用javax.activation.DataSource大小问题,java,datasource,filesize,Java,Datasource,Filesize,如何获得(特别是-)所消耗的物理内存量?我使用javax.mail.util.ByteArrayDataSource(byte[]bytes,字符串类型)构造函数,其中我得到bytes如下: String str = "test"; byte[] bytes = str.getBytes(); 那会是str.length()字节吗?还有其他想法吗?str.length()将给出字符数 bytes.length将给出实际的字节数 根据您的活动角色集,这可能相同,也可能不同。某些字符被编码为多个字
javax.mail.util.ByteArrayDataSource(byte[]bytes,字符串类型)
构造函数,其中我得到bytes
如下:
String str = "test";
byte[] bytes = str.getBytes();
那会是str.length()
字节吗?还有其他想法吗?str.length()将给出字符数
bytes.length将给出实际的字节数
根据您的活动角色集,这可能相同,也可能不同。某些字符被编码为多个字节
例如:
public static void main(String[] args) {
String s1 = "test";
byte[] b1 = s1.getBytes();
System.out.println(s1.length());
System.out.println(b1.length);
String s2 = "\u0177";
byte[] b2 = s1.getBytes();
System.out.println(s2.length());
System.out.println(b2.length);
}
返回
四,
4.
1.
4不清楚你在问什么 一个
byte[]
所消耗的字节数就是它的长度:bytes.length
Java字符串在内存中消耗的字节数为每个字符2字节,因为在内存中它被编码为UCS-2:2*str.length()
当序列化为字节[]
时,字符串所消耗的字节数取决于您选择的字符编码。您必须序列化它并进行检查
但是您真正想做什么呢?Java字符串总是每个字符消耗2个字节(加上一点内部开销),因为Java字符是2个字节,并且内存中的编码实际上总是UCS-2。