2
回答
Java GC中,user时间为什么比较长
利用AWS快速构建适用于生产的无服务器应用程序,免费试用12个月>>>   

Java GC时,一台硬件配置更高的小机比配置低小机的user time执行时间大很多,为什么呀?求指教!

如下GC日志所示:user时间为6.84,而real只有0.25。

J  [GC [ParNew: 1261198K->198145K(1572864K), 0.2464861 secs] 1261198K->198145K(4718592K), 0.2476339 secs] [Times: user=6.48 sys=0.11, real=0.25 secs] 

配置高的服务器为32核160G内存的小机,感觉Java运行比较慢,还不如一般配置的PC机。

举报
olivee_li
发帖于4年前 2回/858阅
共有2个答案 最后回答: 4年前

首先你得弄明白user,sys,real是什么意思

具体可以看这里:http://stackoverflow.com/questions/556405/what-do-real-user-and-sys-mean-in-the-output-of-time1

这些时间不光和配置相关,也和你这个机器都运行了什么应用,整个系统状况有关系。

user大不能说明java运行的慢,你看完上面的解释就明白了。

关于运行是否慢,必须依照严格的测试来评估(可能还不一定准确)。

--- 共有 4 条评论 ---
olivee_li回复 @专业打酱油 : 64C,256 线程的服务器,CPU、内存、磁盘IO利用率都比较低,不知道为啥就比普通的PC服务器运行慢?! 4年前 回复
专业打酱油回复 @olivee_li : 两台机器负载都很低的情况下测试的么? 我赶脚user大的机器负载应该高一些。目前根据你的测试,确实user大,java执行要慢一些,毕竟单线程,应用是单线程,pc还是应该有其他活动,否则user不应该这么大,这个做基准测试我没做过的。 4年前 回复
olivee_li但是,我们写了一个单线程的测试程序(计算10万个10以内的随机数相加),那个user时间长的服务器要比user时间断的服务器慢三倍。而在BS模式下,用户的一个请求一般都是在一个线程中的,所以我推断一般情况下user时间长的服务器,执行Java要慢一些! 这个和服务器的单核处理能力有关,即便有服务器有256线程的处理器,但是每个线程的处理能力比较差,也不一定能比上一个32线程的服务器。 4年前 回复
olivee_li看过stackoverflow的解释,也就是说user时间是CPU执行用户代码的时间,sys时间是CPU执行内核代码的时间,real是程序执行开始到结束的时间(包括IO操作)。 在应用服务器中,因为是在多处理器的环境下,user时间是多个处理器执行时间的总和,应为是多线程并行执行的,所以real时间可能比user时间小很多。 4年前 回复
顶部