一个String的大小大于10M,会否出现问题?

thewayhome 2006-09-03 10:10:48
一个String的大小大于10M,会否出现问题?
...全文
633 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
Mark_MaoHUA 2006-09-08
  • 打赏
  • 举报
回复
这么长就用流了
qinqinxiatiao 2006-09-08
  • 打赏
  • 举报
回复
到底有没有限制啊~~~

偶晕~
iori97king 2006-09-07
  • 打赏
  • 举报
回复
Areslp 2006-09-07
  • 打赏
  • 举报
回复
mark
kingfish 2006-09-07
  • 打赏
  • 举报
回复
String 内部用char数组存储,而数组大小用int存储。所以有限制
当然如果你配给jvm的heapsize小,还没到int值,就已经outofmemory

to blackpark:
jvm缺省heapsize在64m左右。 需要调整heapsize大小
火山企鹅 2006-09-07
  • 打赏
  • 举报
回复
String类应该没有长度限制才对
blackpark 2006-09-07
  • 打赏
  • 举报
回复
我重新作了测试
如果
String s = "xxxx..."; // 1 数据长度大于65535就会出错

char[] c = new char[123456];
...
String s = new Stirng(c); // 2 数值再大也不出错。

我查了JDK的String类的sourceCode如下:
1使用的构造方法如下:
public String(String original) {
int size = original.count;
char[] originalValue = original.value;
char[] v;
if (originalValue.length > size) {
// The array representing the String is bigger than the new
// String itself. Perhaps this constructor is being called
// in order to trim the baggage, so make a copy of the array.
v = new char[size];
System.arraycopy(originalValue, original.offset, v, 0, size);
} else {
// The array representing the String is the same
// size as the String, so no point in making a copy.
v = originalValue;
}
this.offset = 0;
this.count = size;
this.value = v;
}

2. 构造方法如下:

public String(char value[]) {
int size = value.length;
char[] v = new char[size];
System.arraycopy(value, 0, v, 0, size);
this.offset = 0;
this.count = size;
this.value = v;
}
这两个构造方法都是把数据String or char[] 转化赋值给自己的char[] value
为什么出问题,我也解释不清楚,等待高手答复。
kingfish 2006-09-05
  • 打赏
  • 举报
回复
//只要你的内存够大,几百G都不是问题!
没那么大。
flyingghost 2006-09-05
  • 打赏
  • 举报
回复
字符串长度是一个int型的变量,你的长度能超过他就算你赢

--------------------------

这个搞笑。娃哈哈哈哈哈。
fishyqd 2006-09-05
  • 打赏
  • 举报
回复
很负责任的告诉你,不会
harston 2006-09-05
  • 打赏
  • 举报
回复
字符串长度是一个int型的变量,你的长度能超过他就算你赢
blackpark 2006-09-05
  • 打赏
  • 举报
回复
String 只支持65535个字符, 楼上的兄弟们,你们有没有真的试过给String赋值??????
String 源代码里有个长度的变量65535个字符最多.
再多就用流吧
周公 2006-09-05
  • 打赏
  • 举报
回复
//只要你的内存够大,几百G都不是问题!
//没那么大。
我只想说明String的大小不是受程序限制,而是其它外界原因的限制(内存,时间等)。
周公 2006-09-04
  • 打赏
  • 举报
回复
只要你的内存够大,几百G都不是问题!
dengy1979 2006-09-04
  • 打赏
  • 举报
回复
不会,只不过,你需要一些耐心,且如king_play所说的,将jvm设大一些
luotuoci2004qm 2006-09-04
  • 打赏
  • 举报
回复
应该没有问题,关键是虚拟机能分出多少HEAP给你
zhtaoo 2006-09-03
  • 打赏
  • 举报
回复
GC高
千里冰封820 2006-09-03
  • 打赏
  • 举报
回复
当然不会出问题,只不过速度会变慢而已
程序獵人 2006-09-03
  • 打赏
  • 举报
回复
会否出问题取决于你当前JVM可用内存大小。
如果可用内存不足,自然会出现OutOfMemoryError

可以通过java命令的 -Xmx参数来制定允许JVM使用的最大Heap大小(记得默认是64M来着)。

例如,允许JVM使用的最大heap改为512MB,命令如下
java -Xmx512m className
treeroot 2006-09-03
  • 打赏
  • 举报
回复
哪个傻子会使用这么大的字符串?

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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