java
内存溢出 在线等 急用
我写了一个程序,里面用到了多线程,开始时使用了静态变量Hashtable,运行的时候报错提示内存溢出,后来将静态的Hashtable改为动态数据,并在程序结束后进行回收空间,使用了System.gc(),并且将Hashtable使用clear方法进行清除,而且将java虚拟内存扩大到512M,结果都是运行到相同的地方就会报溢出。
请问还有什么方法可以解决内存溢出的问题?谢谢!
在线等,急用
------解决方案--------------------System.gc后你执行Thread.sleep(2000),等待虚拟机有时间释放内存。如果还是内存溢出那就是说明你分配的
内存不足于装下你的数据。
------解决方案--------------------不明白你为什么要使用Hashtable,如果你需要获取还在活动中的线程
你可以使用ThreadGroup,在你的线程构造函数中传入一个ThreadGroup,你所有线程都属于它
如果需要访问你可以调用ThreadGroup.activeCount和enumerate方法列举出来
------解决方案--------------------首先你检查一下(进行调试)是否发生了死循环
如果没有
你可以 java -Xmx这个参数设置最大stack内存大小
解决内存溢出最好的方法就是加大内存.....
或者你可以借助外存来扩大你的内存...不过算法比较麻烦
------解决方案--------------------HashTable的数据量大吗?程序运行有严格的时间要求吗?如果没有,你可以用List来替换HashTable
------解决方案--------------------应该有内存泄露,用jprofiler测一下