论坛首页 Java企业应用论坛

JVM的GC-生命不能承受之重

浏览 56182 次
精华帖 (17) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (9)
作者 正文
   发表时间:2008-11-07  
严重怀疑是设计上的问题,但是楼主并没有详细说明应用的情况,希望楼主能更详细说下,另外应该避免生成大量对象,调用量大和数据量大并不能成为大量生成对象的理由。
0 请登录后投票
   发表时间:2008-11-07  
如果是设计问题的话,在jvm上打转转就没有意义了。
1 请登录后投票
   发表时间:2008-11-07  
helloboy9527 写道

我需要的是一种GC算法,可以在多核的情况下,在较大内存(10多G)的情况下,不管是minor GC,或者是Full GC,均不要stop-the-whold-world,或者停顿非常短的时间(0.1秒以下)。他的CPU可以耗多一点,完整耗掉一个CPU也可以。目前查了几天的资料,看来现在是没有的,期待SUN以后给我们惊喜。

因为minor gc一般是用copying collector,对象会被移动,基本上必须stop world
而full gc一般是mark sweep collector,这个不移动对象,可以并行的
1 请登录后投票
   发表时间:2008-11-07  
你可以看看JROCKIT, 不过, 不知道要不要钱。。。。
0 请登录后投票
   发表时间:2008-11-08  
首先服务器的环境是多cpu的,而能够利用多cpu的有效方式应该是多进程。不过似乎linux环境下java的多线程仍然类似于多进程?不清楚。 不过还是认为启动多个jvm,进行集群,这样利用cpu的效率会最高。

jvm 维护 3G 的 cache 太沉重了,建议使用另外一个东西负责 cache,例如memcacheserver 之类的东西,cache 应该是一个仓库,让jvm背着一个这么大的仓库做运动,才是jvm不能承受之重呀。
0 请登录后投票
   发表时间:2008-11-09  
yananay 写道
首先服务器的环境是多cpu的,而能够利用多cpu的有效方式应该是多进程。不过似乎linux环境下java的多线程仍然类似于多进程?不清楚。 不过还是认为启动多个jvm,进行集群,这样利用cpu的效率会最高。

jvm 维护 3G 的 cache 太沉重了,建议使用另外一个东西负责 cache,例如memcacheserver 之类的东西,cache 应该是一个仓库,让jvm背着一个这么大的仓库做运动,才是jvm不能承受之重呀。



你火星来的啊。。。。。哈哈

0 请登录后投票
   发表时间:2008-11-12  
采用独立于应用的cache方案.
0 请登录后投票
   发表时间:2008-11-12   最后修改:2008-11-12
你应该只是不能容忍那个停顿,但把负荷从5000降到4000不知可不可以接受。
搞个计数器,每xxx次调用强制gc一次,强制分摊gc开销到xxx次操作里头。
jrocket好像就有个强制提高gc频率的参数。
还有就是,真的需要生成那么多临时对象吗?
0 请登录后投票
   发表时间:2008-11-17  
程序设计的问题,调JVM的参数是没用的。
与其在这里质疑和抱怨JVM,不如看看如何修改架构的。最初提出这样做的人就应该拖出去打。
0 请登录后投票
   发表时间:2008-11-17  
完全是程序设计问题。java里面不要cache太多东西,否则gc很慢。假如1000个对象,就需要不断的检查1000个对象的引用关系才能gc。
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics