Java的GC机制到底怎么回事 小弟最近在搞一个JavaSwing的项目,程序运行久了,内存使用也越来愈高,从开始的200M一直飙到1G多。小弟甚为不解!JVM的GC到底有没有起作用,程序里我已经把不需要的对象滞空了,而且也监控到程序运行时GC的调用频率还是蛮高的,可是就是内存下不去求高手指教 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 有些资源存在引用,无法释放吧对象在不用的时候,设为null,各种对象的应用也设置为null,对于各种资源的操作,如流,记得要关闭 用windows的任务管理器查看内存是一直往上飙的,可是用eclipse自带的JConsole监视堆内存的使用情况是有高有下的,最多不超过100M,这到底哪个准? 没用的对象我都null了,没用到文件流啊。 你用什么监控的内存,如果只是用自带的,比如windows的任务管理器,Linux的top命令,你看到的内存肯定是一直涨的,因为GC在内存不够的时候会继续申请内存,就算GC完了,你用这两个工具看到的内存还是扩大以后的,虽然有很多并没有用到要看实际用到的内存需要用System的totalMemory()-freeMemory(),这个才是当前用到的内存,好像有个参数可以设置在多少比例内存没有被使用的时候把内存归还给系统,我没用过,你可以google下不过看你说的,内存很高的时候GC都还是很频繁,那多半是有内存泄漏并不是没用的对象赋值null就能解决的,很肯能是有存活的对象引用到了没用的对象一样会造成没有释放掉,具体你可以dump下来用工具查一下就知道了 这个freeMemory()在每次调用一次GC之后就会变大中间的这个值是freeMemory()的变化 再看一下JConsole监视对内存的情况每次遇到峰值就会调用GC,然后就会下来。 求助怎样让一个点沿着斜线移动? char x=y; 这句代码为什么不能通过呢? 关于参数传递的最基础问题,100分送上! 双精度型转换的问题 我的java之路还继续走下去吗 请问我想分拣出一个javaproject中没有被调用过的程序或方法,有什么工具能做到,eclipse行么? <html:html>标签和<html:base/>标签问题???????? java能否printf出 汉字或字母的计算机内的二进制表示。 高分:JNI急救!! 求助 为什么会出现这样的情况??? 一个Bug myeclipse中的memory面板是怎么用的??
对象在不用的时候,设为null,各种对象的应用也设置为null,对于各种资源的操作,如流,记得要关闭
你看到的内存肯定是一直涨的,因为GC在内存不够的时候会继续申请内存,就算GC完了,你用这两个工具看到的内存还是扩大以后的,虽然有很多并没有用到
要看实际用到的内存需要用System的totalMemory()-freeMemory(),
这个才是当前用到的内存,
好像有个参数可以设置在多少比例内存没有被使用的时候把内存归还给系统,
我没用过,你可以google下
不过看你说的,内存很高的时候GC都还是很频繁,那多半是有内存泄漏
并不是没用的对象赋值null就能解决的,
很肯能是有存活的对象引用到了没用的对象
一样会造成没有释放掉,
具体你可以dump下来用工具查一下就知道了
中间的这个值是freeMemory()的变化
每次遇到峰值就会调用GC,然后就会下来。