老尸 发表于 2015-1-18 11:19:15

JAVA编程:G1,CMS及PARALLEL GC的对照仓酷云

令人可喜的是java现在已经开源了,所以我想我上述的想法也许有一天会实现,因为java一直都是不断创新的语言,每次创新都会给我们惊喜,这也是我喜欢java的一个原因。这篇文章恰好接上前一年我们做的一次实际情况下分歧GC算法功能对照的实验。此次我们仍旧举行一样的实验,不外增添了对G1接纳器的测试,而且在多个平台举行测试。往年我们测试的渣滓接纳器有以下几个:


[*]-XX:+UseParallelOldGC
[*]-XX:+UseConcMarkSweepGC
[*]-XX:+UseG1GC
运转情况

我们利用现成的JIRA义务来运转这个测试。选择它的缘故原由十分复杂——撤除Minecraft(一款出名网游),恼怒的小鸟,和Eclipse不说,JIRA应当是最出名的Java使用程序了。而且和其余候选者比拟,它更能代表我们一样平常的营业处置流程——究竟来讲Java用得最多的中央仍是在服务真个Java企业级使用。
影响我们决意的另有一个要素——Atlassian的工程师们公布了一个打包好的JIRA压测剧本。我们能够间接用它来举行我们的基准测试。
我们细心的将最新版的JIRA6.1解压,然后把它安装到MacOSXMavericks上。最初间接利用默许的内存参数设置来运转这个测试程序。Atlassian团队的家伙已帮我们把参数也设置好了:

-Xms256m-Xmx768m-XX:MaxPermSize=256m
这个程序利用了JIRA的罕见的几种分歧功效——创立义务,分派义务,剖析义务,查找及发明义务,等等。总的运转工夫是30分钟。
我们利用了三种分歧的GC算法来运转这个测试——Parallel,CMS,和G1。每次测试都从头启动一个新的JVM实例,并事前把存储恢复到一样的形态。统统筹办停当后我们才入手下手启动压测。
了局

每次测试我们都经由过程-XX:+PrintGCTimeStamps-Xloggc:/tmp/gc.log-XX:+PrintGCDetails来搜集GC日记,最初利用GCViewer来剖析内里的数据。
汇总后的了局以下。注重测试了局的单元是毫秒。
年ParallelCMSG1TotalGCpauses209301887062000MaxGCpause7216450申明

起首来看ParallelGC(-XX:+UseParallelOldGC)。在这30分钟的测试过程当中,并行搜集器的GC也许停息了有21秒。最长的一次花了721毫秒。我们来以这个做为基准:从总的运转工夫来看,GC周期削减了1.1%的吞吐量。最长的提早工夫也许是721毫秒。
下一个:CMS(-XX:+UseConcMarkSweepGC)。在30分钟的测试中,因为GC而丧失的工夫是19秒。吞吐量和上一次的并行形式下的差未几。不外时延方面有了分明的改良——最坏的情形下的时延削减了10倍!如今最年夜的GC停息工夫只要64毫秒。
最初一次测试用的是最新最潮的GC算法——GC(-XX:+UseG1GC)。运转的是一样的测试程序,不外了局的吞吐量则严峻下落了。此次测试使用在GC上消费的工夫凌驾了一分钟。和CMS只要1%的开支比拟,此次的吞吐量下落了有3.5%。不外假如你不在意吞吐量而更在意时延的话——这方面它和后面体现最好的CMS比拟另有20%的提拔——G1接纳器最长的停息工夫只要50ms。
结论

想经由过程这么一次实验来得出一个结论长短常伤害的。假如你的工夫充分又有响应的才能的话——你应当在本人的情况中详细情形详细剖析,而不是利用一刀切的办法。
不外假如说非要得出一个结论,我以为说CMS仍旧是最好的默许选择。G1的吞吐量其实是太差,和它所削减的那点时延比拟其实不划算。

Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。Oracle收购Sun后Java前途未卜。

灵魂腐蚀 发表于 2015-1-20 20:10:50

Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。

不帅 发表于 2015-1-22 09:17:49

你现在最缺的是实际的工作经验,而不是书本上那些凭空想出来的程序。

若相依 发表于 2015-1-31 05:20:53

如果你学过HTML,那么事情要好办的多,如果没有,那你快去补一补HTML基础吧。其实JSP中的Java语法也不多,它更象一个脚本语言,有点象ASP。

活着的死人 发表于 2015-1-31 05:20:53

学Java必读的两个开源程序就是Jive和Pet Store.。 Jive是国外一个非常著名的BBS程序,完全开放源码。论坛的设计采用了很多先进的技术,如Cache、用户认证、Filter、XML等,而且论坛完全屏蔽了对数据库的访问,可以很轻易的在不同数据库中移植。论坛还有方便的安装和管理程序,这是我们平时编程时容易忽略的一部份(中国程序员一般只注重编程的技术含量,却完全不考虑用户的感受,这就是我们与国外软件的差距所在)。

透明 发表于 2015-1-31 07:10:33

所以现在应用最广泛又最好学的就是J2EE了。 J2EE又包括许多组件,如Jsp,Servlet,JavaBean,EJB,JDBC,JavaMail等。要学习起来可不是一两天的事。那么又该如何学习J2EE呢?当然Java语法得先看一看的,I/O包,Util包,Lang包你都熟悉了吗?然后再从JSP学起。

飘灵儿 发表于 2015-1-31 21:18:44

吧,现在很流行的Structs就是它的一种实现方式,不过Structs用起来实在是很繁,我们只要学习其精髓即可,我们完全可以设计自己的MVC结构。然后你再研究一下软件Refactoring (重构)和极限XP编程,相信你又会上一个台阶。 做完这些,你不如整理一下你的Java代码,把那些经典的程序和常见的应用整理出来,再精心打造一番,提高其重用性和可扩展性。你再找几个志同道合的朋友成立一个工作室吧

分手快乐 发表于 2015-2-6 22:50:32

当然你也可以参加一些开源项目,一方面可以提高自己,另一方面也是为中国软件事业做贡献嘛!开发者在互联网上用CVS合作开发,用QQ,MSN,E-mail讨论联系,天南海北的程序员分散在各地却同时开发同一个软件,是不是很有意思呢?

山那边是海 发表于 2015-2-12 06:21:40

一般学编程语言都是从C语开始学的,我也不例外,但还是可能不学过程语言而直接学面向对象语言的,你是刚接触语言,还是从C开始学比较好,基础会很深点,如果你直接学习JAVA也能上手,一般大家在学语言的时候都记一些语言的关键词,常有的包和接口等。再去做逻辑代码的编写,以后的学习过程都是从逻辑代码编写中提升的,所以这方面都是经验积累的。你要开始学习就从

飘飘悠悠 发表于 2015-2-17 17:21:04

如果要向java web方向发展也要吧看看《Java web从入门到精通》学完再到《Struts2.0入门到精通》这样你差不多就把代码给学完了。有兴趣可以看一些设计模块和框架的包等等。

小魔女 发表于 2015-3-5 21:14:28

你一定会高兴地说,哈哈,原来成为Java高手就这么简单啊!记得Tomjava也曾碰到过一个项目经理,号称Java很简单,只要三个月就可以学会。

因胸联盟 发表于 2015-3-12 15:10:15

关于设计模式的资料,还是向大家推荐banq的网站 http://www.jdon.com/,他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。

海妖 发表于 2015-3-19 23:21:27

学Java必读的两个开源程序就是Jive和Pet Store.。 Jive是国外一个非常著名的BBS程序,完全开放源码。论坛的设计采用了很多先进的技术,如Cache、用户认证、Filter、XML等,而且论坛完全屏蔽了对数据库的访问,可以很轻易的在不同数据库中移植。论坛还有方便的安装和管理程序,这是我们平时编程时容易忽略的一部份(中国程序员一般只注重编程的技术含量,却完全不考虑用户的感受,这就是我们与国外软件的差距所在)。
页: [1]
查看完整版本: JAVA编程:G1,CMS及PARALLEL GC的对照仓酷云