ArrayList,Hashtable有多大容量,怎样才不会out of memory?

孙亖
博客专家认证
2003-09-15 08:35:04
如题,谢谢.
...全文
755 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
三合一 2003-09-16
  • 打赏
  • 举报
回复
java在运行每个java程序是会分配一定量的内存,具体根据你用的虚拟机不同,比如client和server使用就不同,如果程序较大的话可以考虑修改虚拟机的默认参数,用xmn什么的增大内存的使用,不过一般的程序是不会出现内存溢出问题的
haode 2003-09-16
  • 打赏
  • 举报
回复
JAVA很少出现内存泄露,估计是你的内存不足了
jscsqb 2003-09-16
  • 打赏
  • 举报
回复
调用add方法的时候注意取得其返回值进行判断,避免出现错误的报告。
javaVegetable 2003-09-15
  • 打赏
  • 举报
回复
那么我想也许是内存不足了吧。不能再再堆上进行空间的分配了吧
孙亖 2003-09-15
  • 打赏
  • 举报
回复
谢谢大家,可能不是内存泄漏吧,java又不可以操作内存,我一直add()250000个对象还可以,再大一点就会出现哪个错误了
jscsqb 2003-09-15
  • 打赏
  • 举报
回复
hehe 楼主的意思是数量足够大的情况下。
moke33 2003-09-15
  • 打赏
  • 举报
回复
这个内存泄漏没什么关系,java的垃圾回收机制还可以
一般来说不会发生outofmemery现象,除非你的程序出错,或者你的设计出错
jscsqb 2003-09-15
  • 打赏
  • 举报
回复
我帮你查看了一下Api文档,在ArrayList类的说明中有如下一段话:
Each ArrayList instance has a capacity. The capacity is the size of the array used to store the elements in the list. It is always at least as large as the list size. As elements are added an ArrayList, its capacity grows automatically. The details of the growth policy are not specified beyond the fact that adding an element has constant amortized time cost.
An application can increase the capacity of an ArrayList instance before adding a large number of elements using the ensureCapacity operation. This may reduce the amount of incremental reallocation.
这里说到ArrayList的一个容量的问题,如果想要Add数量比较多的元素,最好要使用该类
的一个叫做ensureCapacity的方法来确保ArrayList实例具有你所要指定的一个最小的容量。这样的话,对于大容量ArrayList实例,应该就可以由JDK正确地指定到内存中了,这些内存段是否连续,当然是由JDK来处理的问题了。至于这个最小的容量可以达到多少,这里没有讲明,不过应该是和内存多少和每个元素的大小有关系的吧,不好一概而论!
防止out of memory,有一个方法,就是根据每次调用add方法的时候add的返回值(boolean型)来判断!
至于hashTable,与容量有关的是一下的一段:
The initial capacity controls a tradeoff between wasted space and the need for rehash operations, which are time-consuming. No rehash operations will ever occur if the initial capacity is greater than the maximum number of entries the Hashtable will contain divided by its load factor. However, setting the initial capacity too high can waste space.
这里提到初始容量和rehash方法,也就是hashtable在初始容量不够用的情况下可以通过
rehash方法自动增加容量,至于可以增加多少,文档也没有提,显然也是类似于ArrayList的吧。
以上是一些不太成熟的看法,与楼主交流一下,共同提高。
foryouever 2003-09-15
  • 打赏
  • 举报
回复
理论上只要你的内存足够,容量无穷吧。同意楼上说的,而且注意不要下标越界。
LingFengNB 2003-09-15
  • 打赏
  • 举报
回复
up
学习
NewStarter 2003-09-15
  • 打赏
  • 举报
回复
注意编码的时候不要又内存泄漏就可以了

62,614

社区成员

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

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