OutOfMemoryError异常通常是由什么原因引起的?问下JVM对对象的大小和多少到底有没有控制? 虽然gc会在适当的时候自动回收内存,但是我们不知道gc何时自动回收,因此为了使jvm的内存有合理的分配和调度,我们某些时候需要去手动释放内存,将不用的字符串指向null,释放他们占有的内存空间!jvm对内存的分配应该有控制! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 具体有什么方法不知道,不过同意楼上的观点,可以自己setUp(),tearDown(),就是说在setUp()里设置初始的各个变量,对象等。当程序运行完成,执行tearDown(),tearDown()里面是清除各个变量,对象等。这2个方法是在JUnit里被使用的。值得参考。 OutOfMemoryError死循环 …… ^^ 解决OutOfMemoryError的办法只有2个一是升级二是改善程序算法 内存有泄漏.用Optimizeit工具查一下. 也有可能频繁打开了一些资源,没用了却没有释放,GC对没有释放的资源是不会垃圾收集的。比如数据库链接,ResultSet等。 这个首先检查你的代码是不是没有问题如果不是死循环造成的,就使用下面的命令增加虚拟机内存java -Xms8888k -Xmx8888k XXX这两个参数大小最好设置成一样的 两种可能性,一种是内存泄漏,另一种是企图把超过JVM堆的数据载入JVM,比如你用DOM方式去读一个200M的XML这个肯定会出现这个错误。 java垃圾清除机制是有自己的判断算法的.被回收的对象必需是没有任何引用的例如Strnig c="asdfasdf";c="aaaa";//此时"asdfasdf"没有任何引用指向,所以将来会被回收 通常发生在堆中没有足够空间用于新对象的存放.不妨先做一下完整的垃圾清理,public static void fullGC(){Runtime rt = Runtime.getRuntime();long isFree = rt.freeMemory();long wasFree ;do{ wasFree = isFree; rt.runFinalization(); rt.gc(); isFree = rt.freeMemory();}while(isFree > wasFree);}( 代码抄于java编程语言) JVM规范并没有规定堆的初始大小是多少以及是否可扩展,具体都由虚拟机实现者决定. 结贴!程序本身也考虑了优化的措施但数据量的确太大,矛盾好像无法解决有好的方案的DX可以email给我 [email protected],高分重谢 【提问】为什么窗口运行后不能点击叉叉关闭窗口,而且实现不了功能 [新人请教!!]关于将汉字转成UNICODE代码的简单程序。。 使用Struts+Hibernate遇到了个问题请知道的指点下(回答就给分) 关于两个applet之间互相通讯的简单问题 可以在Web界面显示(调用)GUI吗??? 为什么我可以用IE访问csdn,但是使用程序就无法访问? 100分简单问题 如何在函数的参数中实现字符串数组的创建 救命呀,救命呀,100分,高手帮我 如何设置package路径 如何JFileChooser显示英文? 有没有在linux下开发java的兄弟?
死循环 …… ^^
一是升级
二是改善程序算法
比如数据库链接,ResultSet等。
如果不是死循环造成的,就使用下面的命令增加虚拟机内存
java -Xms8888k -Xmx8888k XXX
这两个参数大小最好设置成一样的
c="aaaa";//此时"asdfasdf"没有任何引用指向,所以将来会被回收
不妨先做一下完整的垃圾清理,
public static void fullGC(){
Runtime rt = Runtime.getRuntime();
long isFree = rt.freeMemory();
long wasFree ;
do{
wasFree = isFree;
rt.runFinalization();
rt.gc();
isFree = rt.freeMemory();
}while(isFree > wasFree);
}
( 代码抄于java编程语言)
程序本身也考虑了优化的措施
但数据量的确太大,矛盾好像无法解决
有好的方案的DX可以email给我 [email protected],高分重谢