搞C的人对内存溢出应该非常熟悉咯。搞java的似乎对这个问题不是很在乎,因为java提供了垃圾回收机制。只是这个垃圾回收机制实在是太垃圾了。
 
平时自己写写程序玩玩的时候不在乎内存消耗,可是真正做了产品了,需要长时间运行的时候就不得不在乎了。同事的一个模块不间断的接收消息入库,没几分钟就到了1G。我的稍微好点,用了5分钟把java虚拟机默认的64M撑爆了。
 
Netbeans的Profiles功能真的很不错,线程,内存统统都可以查看得很详细。可惜JAVA的bug太多了,一会儿发现Timer有个bug,一会儿发现LinkBlockingQueue似乎有问题,俺就发现JDBC的PreparedStatement存在比较大的问题,我每个方法都有finally块执行ResultSet和PreparedStatement关闭,可惜跟踪下来的结果就是PreparedStatement在不停的增加内存消耗,不得以换了Statement,原来5分钟从30k变成3M的现在始终维持在70k以下。
 
不过始终还是有点什么在消耗内存,还需要继续寻找,对着一大串的图标,曲线,数据,有一种想砸电脑的冲动
 
Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐