JAVA 大数组问题

yu_xm 2013-01-29 02:57:11
以前一直做C++,刚开始学JAVA,请大家多多帮忙
想定义一个大的数组(大概600KB),数组只用来提供初始化数据,运行过程中不会更新数组中的内容,下面这样的定义编译器报“Too many constants, the constant pool for xxx would exceed 65536 entries”错误。
char g_MainData[] = {
0x81, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x06, 0x00, 0x04, 0x01, 0x85, 0x01, 0x01, 0x01, 0x7f, 0x00......};

不希望用new方式动态分配空间,因为数组目的是用来提供600KB的初始化数据,也不想用读文件的方式,因为读文件速度太慢,请大家帮忙看看怎么解决。
...全文
259 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
龙四 2013-01-29
  • 打赏
  • 举报
回复
有没有new并无区别
失落夏天 2013-01-29
  • 打赏
  • 举报
回复
引用 5 楼 dy110936 的回复:
引用 1 楼 AA5279AA 的回复:char g_MainData[] = { 0x81, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x06, 0x00, 0x04, 0x01, 0x85, 0x01, 0x01, 0x01, 0x7f, 0x00......}; 改成 char[] g_MainData = { 0x81, 0x00, 0……
嗯,是我错了。以前没用过
-迷糊- 2013-01-29
  • 打赏
  • 举报
回复
引用 1 楼 AA5279AA 的回复:
char g_MainData[] = { 0x81, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x06, 0x00, 0x04, 0x01, 0x85, 0x01, 0x01, 0x01, 0x7f, 0x00......}; 改成 char[] g_MainData = { 0x81, 0x00, 0x7f, 0x00, 0x7f, 0x0……
难道char g_MainData[]和char[] g_MainData不一样吗? 需要修改JVM的启动参数吧。
zhangchao19890805 2013-01-29
  • 打赏
  • 举报
回复
你可以更改java虚拟机占用的内存,试试把java虚拟机的内存调整的大一点
yu_xm 2013-01-29
  • 打赏
  • 举报
回复
改成char[] g_MainData一样会报错, 最大限制64KB,那这个问题就无解了,是这样的吗?
dracularking 2013-01-29
  • 打赏
  • 举报
回复
这个是直接初始化数组时元素的数量限制 <=2^16 ,虽然还没找到官方出处。 这里可以参考: http://www.aicas.com/jamaica/3.2/doc/html/limitations.html 但动态分配数组大小是不受此限制的。 不妨初始化n个这样的数组,然后动态分配给一个更大的数组。
失落夏天 2013-01-29
  • 打赏
  • 举报
回复
char g_MainData[] = { 0x81, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x06, 0x00, 0x04, 0x01, 0x85, 0x01, 0x01, 0x01, 0x7f, 0x00......}; 改成 char[] g_MainData = { 0x81, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x06, 0x00, 0x04, 0x01, 0x85, 0x01, 0x01, 0x01, 0x7f, 0x00......}; 然后看看报错不。 你那是给一个对象赋值,不是赋值给一个数组 java中char数组上限大约是上百万个,和内存有关。

51,396

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧