LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql

JVM垃圾回收判定问题。

[复制链接]
发表于 2008-6-20 16:06:47 | 显示全部楼层
Logger log = Logger.getLogger(name);
log....
这样不能解决问题吗?

需要使用生命周期较短的Logger
=======================
什么意思?

其实java中很多这样的例子,就是用空间换时间,很多都是利用池的概念的,比如连接池,线程池。但是这些必须是可控得,如果控制不好,java照样会内存泄露。而内存泄露这个概念在java生态环境中,大部分人都不注意,所以问题还是比较严重的。我看到过好多人写的java服务程序每天重起一次的,要不资源就耗尽了。
回复 支持 反对

使用道具 举报

发表于 2008-6-20 18:25:59 | 显示全部楼层
我晕,这个论坛服务器的时间用的那个时区的?怎么这么离谱?
回复 支持 反对

使用道具 举报

自由狼-台风 该用户已被删除
 楼主| 发表于 2008-6-20 23:53:12 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

发表于 2008-6-21 13:58:14 | 显示全部楼层
不能深入了解你的业务逻辑,所以不好说什么,不过我碰见过一个比较低级但是
却应该比较有用的解决办法:

1:首先,摸出程序在正常情况下大概多长时间会消耗资源比较严重;
2:然后给系统添加一个定时任务,比如每天的晚上1点重起服务。

虽然很弱智,但是确实很管用。能让服务稳定很多。
回复 支持 反对

使用道具 举报

自由狼-台风 该用户已被删除
 楼主| 发表于 2008-6-21 22:28:35 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

发表于 2008-6-22 10:27:40 | 显示全部楼层
如果你一个人做,应该很容易做到起码一个月不重起,但是如果是一个组做,其中如果有一个人出错了,那就会拖累整个系统,所以,规范很重要,用到的各种技术一定要摸清楚运行机制,整理出来使用规范,然后才能让下面的人按照规范使用。
现在有些人一味的追球新技术,新框架,毫不熟悉就是用,最后能个系统跟蜗牛一样,我碰到过好多这样的情况。
有些时候不妥协也没有办法啊,老板就喜欢新技术,nnd。
回复 支持 反对

使用道具 举报

发表于 2008-6-22 10:38:37 | 显示全部楼层
如果你是web的应用,好像有个工具叫 loadruner 什么的,可以作白盒的压力测试,你可以压一下看看。一个项目的质量,专业的测试还是必不可少的。
回复 支持 反对

使用道具 举报

发表于 2008-6-23 00:50:23 | 显示全部楼层
虽然不是很确切理解为什么要采取每个请求一个文件的方式(感觉最后产生大量的文件会是一个大问题,也许用数据库会更加合适些?),以及标准的  Logger 架构是不是适合楼主的情形(我想象中,Logger 库恐怕不是为产生大量的文件而设计的,我很怀疑它是不是会及时地关闭文件)。不过,在 Logger 架构里面, slf4j 的 LogBack/MDC 不知道会不会有帮助。

回到最初的关于宏观的对象生命周期控制的问题,其实楼主的情形和 Apache Common 的 HttpClient 很接近。用户调用一个 Factory 方法从池中获取一个对象,使用完以后,调用 close,通知库不再使用这个对象,这样库就可以再把这个对象分配给别人。对于楼主的实现,库应该在收到通知以后,关闭这个对象对应的文件,并把这个对象的引用从内部的 HashTable 中删除。
回复 支持 反对

使用道具 举报

自由狼-台风 该用户已被删除
 楼主| 发表于 2008-6-23 12:36:32 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

发表于 2009-9-21 22:53:27 | 显示全部楼层
字数打的太多了 ~~!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表