小编use*_*238的帖子

Java char数组似乎每个char需要超过2个字节

当我运行以下程序(运行"java -Xmx151M -cp . com.some.package.xmlfun.Main")时:

package com.some.package.xmlfun;
public class Main {

    public static void main(String [] args) {
        char [] chars = new char[50 * 1024 * 1024];

    }
}
Run Code Online (Sandbox Code Playgroud)

我需要将最大内存增加到至少151M(-Xmx151M).因此,当我增加数组大小时,需要增加限制:

  • 50*1024*1024 - > -Xmx151M
  • 100*1024*1024 - > -Xmx301M
  • 150*1024*1024 - > -Xmx451M

为什么看起来java每个字符需要3个字节,而不是文档建议的2个字节?

此外,当我类似地创建长数组时,似乎每个长度需要12个字节,而不是8个,使用int它需要6个字节而不是4个.通常看起来它需要array_size*element_size*1.5

用.编译 - javac \com\som\package\xmlfun\\*java

跑步 - java -Xmx151M -cp . com.some.package.xmlfun.Main

java primitive jvm sizeof char

15
推荐指数
2
解决办法
451
查看次数

标签 统计

char ×1

java ×1

jvm ×1

primitive ×1

sizeof ×1