成为JavaGC专家Part II -- 如何监控Java垃圾回收机制 - ImportNew
| 分类: ,
| 标签: , ,
本文是成为Java GC专家系列文章的第二篇。在第一篇《》中我们学习了不同GC算法的执行过程,GC是如何工作的,什么是新生代和老年代,你应该了解的JDK7中的5种GC类型,以及这5种类型对于应用性能的影响。
在本文中,我将解释JVM到底是如何执行垃圾回收处理的。
什么是GC监控?
垃圾回收收集监控指的是搞清楚JVM如何执行GC的过程,例如,我们可以查明:
何时一个新生代中的对象被移动到老年代时,所花费的时间。
Stop-the-world 何时发生的,持续了多长时间。
GC监控是为了鉴别JVM是否在高效地执行GC,以及是否有必要进行额外的性能调优。基于以上信息,我们可以修改应用程序或者调整GC算法(GC优化)。
如何监控GC
有很多种方法可以监控GC,但其差别仅仅是GC操作通过何种方式展现而已。GC操作是由JVM来完成,而GC监控工具只是将JVM提供的GC信息展现给你,因此,不论你使用何种方式监控GC都将得到相同的结果。所以你也就不必去学习所有的监控GC的方法。但是因为学习每种监控方法不会占用太多时间,了解多一点可以帮助你根据不同的场景选择最为合适的方式。
下面所列的工具以及JVM参数并不适用于所有的HVM供应商。这是因为并没有关于GC信息的强制标准。本文我们将使用HotSpot JVM (Oracle JVM)。因为NHN 一直在使用Oracle (Sun) JVM,所以用它作为示例来解释我们提到的工具和JVM参数更容易些。
首先,GC监控方法根据访问的接口不同,可以分成CUI 和GUI 两大类。CUI GC监控方法使用一个独立的叫做”jstat”的CUI应用,或者在启动JVM的时候选择JVM参数”verbosegc”。
GUI GC监控由一个单独的图形化应用来完成,其中三个最常用的应用是”jconsole”, “jvisualvm” 和 “Visual GC”。
下面我们来详细学习每种方法。
jstat 是HotSpot JVM提供的一个监控工具。其他监控工具还有jps 和jstatd。有些时候,你可能需要同时使用三种工具来监控你的应用。jstat 不仅提供GC操作的信息,还提供类装载操作的信息以及运行时编译器操作的信息。本文将只涉及jstat能够提供的信息中与监控GC操作信息相关的功能。
jstat 被放置在$JDK_HOME/bin。因此只要java 和 javac能执行,jstat 同样可以执行。
你可以在命令行环境下执行如下语句。
$& jstat -gc
$&vmid$& 1000
在上图的例子中,实际的数据会按照如下列输出:
vmid (虚拟机 ID),正如其名字描述的,它是虚拟机的ID,Java应用不论运行在本地还是远程的机器都会拥有自己独立的vmid。运行在本地机器上的vmid称之为lvmid (本地vmid),通常是PID。如果想得到PID的值你可以使用ps命令或者windows任务管理器,但我们推荐使用jps来获取,因为PID和lvmid有时会不一致。jps 通过Java PS实现,jps命令会返回vmids和main方法的信息,正如ps命令展现PIDS和进程名字那样。
首先通过jps命令找到你要监控的Java应用的vmid,并把它作为jstat的参数。当几个WAS实例运行在同一台设备上时,如果你只使用jps命令,将只能看到启动(bootstrap)信息。我们建议在这种情况下使用ps -ef | grep java与jps配合使用。
想要得到GC性能相关的数据需要持续不断地监控,因此在执行jstat时,要规则地输出GC监控的信息。
例如,执行”jstat -gc ; (或 1s)会每隔一秒展示GC监控数据。”jstat -gc 43;会每隔1秒展现一次,且一共10次。
输出每个堆区域的当前可用空间以及已用空间(伊甸园,幸存者等等),GC执行的总次数,GC操作累计所花费的时间。
gccapactiy
输出每个堆区域的最小空间限制(ms)/最大空间限制(mx),当前大小,每个区域之上执行GC的次数。(不输出当前已用空间以及GC执行时间)。
输出-gcutil提供的信息以及最后一次执行GC的发生原因和当前所执行的GC的发生原因
输出新生代空间的GC性能数据
gcnewcapacity
输出新生代空间的大小的统计数据。
输出老年代空间的GC性能数据。
gcoldcapacity
输出老年代空间的大小的统计数据。
gcpermcapacity
输出持久带空间的大小的统计数据。
输出每个堆区域使用占比,以及GC执行的总次数和GC操作所花费的事件。
你可以只关心那些最常用的命令,你会经常用到 -gcutil (或-gccause), -gc and -gccapacity。
-gcutil 被用于检查堆间的使用情况,GC执行的次数以及GC操作所花费的时间。
-gccapacity以及其他的参数可以用于检查实际分配内存的大小。
使用-gc 参数你可以看到如下输出:
不同的jstat参数输出不同类型的列,如下表所示,根据你使用的”jstat option”会输出不同列的信息。
输出Survivor0空间的大小。单位KB。
-gccapacity
-gcnewcapacity
输出Survivor1空间的大小。单位KB。
-gccapacity
-gcnewcapacity
输出Survivor0已用空间的大小。单位KB。
输出Survivor1已用空间的大小。单位KB。
输出Eden空间的大小。单位KB。
-gccapacity
-gcnewcapacity
输出Eden已用空间的大小。单位KB。
输出老年代空间的大小。单位KB。
-gccapacity
-gcoldcapacity
输出老年代已用空间的大小。单位KB。
输出持久代空间的大小。单位KB。
-gccapacity
-gcoldcapacity
-gcpermcapacity
输出持久代已用空间的大小。单位KB。
新生代空间GC时间发生的次数。
-gccapacity
-gcnewcapacity
-gcoldcapacity
-gcpermcapacity
新生代GC处理花费的时间。
full GC发生的次数。
-gccapacity
-gcnewcapacity
-gcoldcapacity
-gcpermcapacity
full GC操作花费的时间
-gcoldcapacity
-gcpermcapacity
GC操作花费的总时间。
-gcoldcapacity
-gcpermcapacity
新生代最小空间容量,单位KB。
-gccapacity
-gcnewcapacity
新生代最大空间容量,单位KB。
-gccapacity
-gcnewcapacity
新生代当前空间容量,单位KB。
-gccapacity
-gcnewcapacity
老年代最小空间容量,单位KB。
-gccapacity
-gcoldcapacity
老年代最大空间容量,单位KB。
-gccapacity
-gcoldcapacity
老年代当前空间容量制,单位KB。
-gccapacity
-gcoldcapacity
持久代最小空间容量,单位KB。
-gccapacity
-gcpermcapacity
持久代最大空间容量,单位KB。
-gccapacity
-gcpermcapacity
持久代当前空间容量,单位KB。
-gccapacity
-gcpermcapacity
持久代当前空间大小,单位KB
-gccapacity
-gcpermcapacity
持久代当前已用空间大小,单位KB
最后一次GC发生的原因
当前GC发生的原因
老年化阈值。被移动到老年代之前,在新生代空存活的次数。
最大老年化阈值。被移动到老年代之前,在新生代空存活的次数。
幸存者区所需空间大小,单位KB。
jstat 的好处是它可以持续的监控GC操作数据,不论Java应用是运行在本地还是远程,只要有控制台的地方就可以使用。当使用-gcutil 会输出如下信息。在GC优化的时候,你需要特别注意YGC, YGCT, FGC, FGCT 和GCT。
这些信息很重要,因为它们展示了GC处理到底花费了多少时间。
在这个例子中,YGC 是217而YGCT 是0.928,这样在简单的计算数据平均数后,你可以知道每次新生代的GC大概需要4ms(0.004秒),而full GC的平均时间为33ms。
但是,只看数据平均数经常无法分析出真正的GC问题。这是主要是因为GC操作时间严重的偏差(换句话说,假如两次full GC的时间是 67ms,那么其中的一次full GC可能执行了10ms而另一个可能执行了57ms。)为了更好地检测每次GC处理时间,最好使用 -verbosegc来替代数据平均数。
-verbosegc
-verbosegc 是在启动一个Java应用时可以指定的JVM参数之一。而jstat 可以监控任何JVM应用,即便它没有制定任何参数。 -verbosegc 需要在启动的时候指定,因此你可能会认为它没有必要(因为jstat可以替代之)。但是, -verbosegc 会以更浅显易懂的方式展现GC发生的结果,因此他对于监控监控GC信息十分有用。
-verbosegc
运行在本机的Java应用可以把日志输出到终端上,或者借助jstatd命令通过网络连接远程的Java应用。
只有那些把-verbogc作为启动参数的JVM。
堆状态(已用空间,最大限制,GC执行次数/时间,等等)
执行GC前后新生代和老年代空间大小,GC执行时间。
Every designated time
每次设定好的时间。
每次GC发生的时候。
何时有用。
当你试图观察堆空间变化情况
当你试图了解单次GC产生的效果。
下面是-verbosegc 的可用参数
? -XX:+PrintGCDetails
? -XX:+PrintGCTimeStamps
? -XX:+PrintHeapAtGC
? -XX:+PrintGCDateStamps (from JDK 6 update 4)
如果只是用了 -verbosegc 。那么默认会加上 -XX:+PrintGCDetails。 -verbosgc 的附加参数并不是独立的。而是经常组合起来使用。
使用 -verbosegc后,每次GC发生你都会看到如下格式的结果。
[GC [&collector&: &starting occupancy1& -& &ending occupancy1&, &pause time1& secs] &starting occupancy3& -& &ending occupancy3&, &pause time3& secs]
minor gc使用的收集器的名字。
starting occupancy1
GC执行前新生代空间大小。
ending occupancy1
GC执行后新生代空间大小。
pause time1
因为执行minor GC,Java应用暂停的时间。
starting occupancy3
GC执行前堆区域总大小
ending occupancy3
GC执行后堆区域总大小
pause time3
Java应用由于执行堆空间GC(包括major GC)而停止的时间。
这是-verbosegc 输出的minor GC的例子。
这是 Full GC发生时的例子
[Full GC [Tenured: 3485K-&K), 0.1745373 secs] 61244K-&K), [Perm : 10756K-&1K)], 0.1762129 secs] [Times: user=0.19 sys=0.00, real=0.19 secs]
如果使用了 CMS collector,那么如下CMS信息也会被输出。
由于 -verbosegc 参数在每次GC事件发生的时候都会输出日志,我们可以很轻易地观察到GC操作对于堆空间的影响。
(Java) VisualVM
+ Visual GC
Java Visual VM是由Oracle JDK提供的图形化的汇总和监控工具。
图1: VisualVM 截图
除了JDK中自带的版本,你还可以直接从官网下载Visual VM。出于便利性的考虑,JDK中包含的版本被命名为Java VisualVM (jvisualvm),而官网提供的版本被命名为Visual VM (visualvm)。两者的功能基本相同,只有一些细小的差别,例如***组件的时候。就个人而言,我更喜欢可以从官网下载的Visual VM。
图 2: Viusal GC ***截图
通过Visual GC,你可以更直观的看到执行jstatd 所得到的信息。
图3: Visual GC 执行截图
可以很方便的分析 -verbosegc 输出的结果,如果Visual GC可以视作jstat的图形化版本,那么HPJMeter就相当于 -verbosgc的图形化版本。当然,GC分析只是HPJMeter提供的众多功能之一,HPJMeter是由惠普开发的性能监控工具,他可以支持HP-UX,Linux以及MS Windows。
起初,一个成为HPTune 被设计用来图形化的分析-verbosegc.输出的结果。但是,随着HPTune的功能被集成到HPJMeter 3.0版本之后,就没有必要单独下载HPTune了。但运行一个应用时, -verbosegc 的结果会被输出到一个独立的文件中。
你可以用HPJMeter直接打开这个文件,以便更直观的分析GC性能数据。
图4: HPJMeter
本文我们主要讲述了如果监控GC操作信息,这将是GC优化的前提。就我个人经验而言,我推荐使用jstat 来监控GC操作,如果你感觉到GC操作的执行时间过长,那就可以使用verbosegc 参数来分析GC。GC优化的大体步骤就是在添加verbosegc 参数后,调整GC参数,分析修改后的结果。在下一篇文章中,我们将通过真实的例子来讲解优化GC的最佳选择。
作者Sangmin Lee, NHN公司,性能工程师实验室高级工程师。
英文原文:,编译:-
译文地址:
【如需转载,请在正文中标注并保留原文链接、译文链接和译者等信息,谢谢合作!】
关于作者:
王晓杰。已过而立之年,毕业于北京工业大学,计算机科学与技术学士学位。
PMP,SCJP,SCWCD。
目前就职于高森明晨信息科技有限公司,任助理产品总监。
潜心学习中,目前主要方向为Java分布式系统架构,Java虚拟机,Android应用。
平时喜爱打篮球和厨艺。
Hello, yeah this post is actually fastidious and I...
关于ImportNew
ImportNew 专注于 Java 技术分享。于日 11:11正式上线。是的,这是一个很特别的时刻 :)
ImportNew 由两个 Java 关键字 import 和 new 组成,意指:Java 开发者学习新知识的网站。 import 可认为是学习和吸收, new 则可认为是新知识、新技术圈子和新朋友……
新浪微博:
推荐微信号
反馈建议:@
广告与商务合作QQ:
– 好的话题、有启发的回复、值得信赖的圈子
– 写了文章?看干货?去头条!
– 为IT单身男女服务的征婚传播平台
– 优秀的工具资源导航
– 活跃 & 专业的翻译小组
– 国内外的精选博客文章
– UI,网页,交互和用户体验
– JavaScript, HTML5, CSS
– 专注Android技术分享
– 专注iOS技术分享
– 专注Java技术分享
– 专注Python技术分享
& 2016 ImportNew高中数学 |
设f、g是R上的可导函数,f′、g′分别为f、g的导函数,且f′g+fg′<0,则当afgC.fg>fg
试题类型:
试题难度:
试题内容:
设f、g是R上的可导函数,f′、g′分别为f、g的导函数,且f′g+fg′&0,则当a&x&b时,有A.fg>fgB.fg>fgC.fg>fgD.fg>fg
试题***:
试题解析 :
本题考查函数积的求导,,故是减函数,当a&x&b,,即,故选择C
本题考查函数积的求导,,故是减函数,当a&x&b,,即,故选择C
更多与文本相关内容,请查看 【
】 栏目
------分隔线----------------------------
------分隔线----------------------------
下一篇:没有了
相关阅读:怎么快速去除脸上的黑色痘印_fgcved934_天涯博客
组尊祖揍状庄
今日访问:[$DayVisitCount$]
总访问量:25
开博时间:
博客排名:暂无排名
【导读】:地板,锅盖擦得再亮也没用,因为你老公不会亲它
俗话说身体发肤授之父母,我们怀着一颗感恩的心来到这个世界,理应感谢父母的养育之恩。可现实总是没有想像中那样完美,尤其是女孩子,长大后发现脸上的痘疤给自己带来很大的负面影响,所以有人会埋怨父母。这种心理确实要不得,同时你也不必灰心,既然父母没有赐予我们完美的肌肤,那我们完全可以靠后天的努力去弥补。比起那些先天xing肢体缺陷的人,你是幸运的,至少你是健康的。你,没有埋怨的理由。 那么怎么快速去除脸上的黑色痘印这个问题怎么解决,以下尤肌祛痘痘专家马上为你解答这个问题。
痘痘在我生活中尴尬的真实经历:
夏瑶是工作后才开始长痘痘的,大学毕业后,凭着名牌大学的***和姣好的相貌身材,她顺利的进入外企工作,她以为自己的生活会就此一帆风顺,可谁知道工作了两年多后,发现自己就开始长痘痘了,刚开始还好,就几颗痘痘,几颗痘痘的长,这个好了,那个又冒出来,由于长的不多,也就没去在意,可是就半年的时间,原本光滑白皙的脸上布满了小红痘痘,还有之前好了的痘痘留下的痘印,同时还要遭受领导异样的眼光。
以前总公司有人过来检查工作的时候,领导都会安排夏瑶做接待,但是现在这个工作肯 定是轮不到自己了。之前没长痘痘的时候,她可是亲戚,朋友,同事眼中标准的大美女,现在&& 痘痘毁了自己的原本应该精彩的生活!
这半年 多来,夏瑶一直在找各种治疗青春痘的方法,也有去美容院做过美容,但是都没效果,也在网上购买了祛痘产品,用了,也没用,不但没治疗好痘痘,反而引发了皮肤炎症,痘痘比以前更严重了。
直到有一天上班,分公司的一个同事送了夏瑶2个周期尤肌净肤祛痘组合给夏瑶,说当时自己妹妹就是用这个调理好痘痘的,让夏瑶也用看看。晚上拿回家,夏瑶就试了,卸妆后,用尤肌净肤套装使用之后,感觉皮肤清爽很多,然后按照说明书上的方法来涂了祛痘精华,然后是霜,就这样子,连着用了一个多月的时间,明显的感觉痘痘的症状就比之前轻了很多。就在两套快要用完的时候,痘痘基本上痊愈了,后来,夏瑶那同事又送了一套给她,说是他妹妹的痘痘治好后,剩下的,就送给夏瑶用了。现在三套用完,青春痘全好了,就连痘印都没有!
真的很感谢自己的同事,后来才知道,这三套都是他特意为自己订购的,他妹妹用尤肌净肤祛痘组合治好痘痘后,他刚好看到我的痘痘那么严重,就特意为自己订购了两套,后来又订购了一套,什么是妹妹没用完的,全是骗自己的&&
忘记说了,他已经晋升为自己的男朋友了 ,原来他早就暗恋我了,刚好给了他这个机会,现在我们开玩笑的时候他还说,要感谢痘痘这个红娘呢,也许如果自己没长痘痘的话,他就一直找不到机会跟自己接触呢&&
其实说真,我们最应该感谢的是尤肌净肤祛痘组合,这个祛痘产品不仅治好了自己的痘痘,还让自己找到一 个这么贴心的男友,真的很感谢尤肌净肤祛痘组合,让自己重新开始了精彩的生活!如果大家也为选择什么产品祛痘效果好而烦恼的话,建议大家可以试下尤肌净肤祛痘组合,相信也不会让你失望的。
尤肌祛痘还你无暇脸颊,客户真实反馈图:
因为痘痘你遭受过什么样的&歧视&?
1、被人嘲笑。脸上的痘痘经常成为别人的&笑柄&
2、自卑。痘痘长期去不掉,心理承受着巨大压力,自卑!
3、给人坏印象。满脸的痘痘,严重损害你的形象,会给别人留下很不好的印象!
4、感情不顺。满脸的痘痘,让你感情受挫
5、事业受阻。屡次被面试官拒绝,找不到合适的工作
痘痘形成原因:
引发痘痘的原因很多,但是皮肤医学上看,主要是肌肤内激素的变化,导致皮脂分泌过多、毛囊排泄不畅、毛孔堵塞,毛孔感染病菌引起发炎和发脓,形成痘痘。粉刺、痤疮、黑头、白头,其实都是通常我们所说的痘痘。
祛痘为什么非尤肌不选?
据报道,YOJION品牌的诞生,源自于韩国人对肌肤美丽的尊崇与发掘。韩国的青年人是世界上最爱美的,他们绝不允许脸上出现任何的瑕疵,更不允许出现满脸的痘痘。为此,韩国科学家经过不懈努力,成功研制出了MAG控制因子。据悉,MAG调控因子具有强力清除毛孔细菌、疏通毛孔的作用,可以快速的除掉隐藏在毛孔、毛囊内的各种细菌以及油脂、毒素等,并改善肌肤薇循环,使肌肤持久保持净白、娇嫩。YOJION正是在这种情况下诞生。
历经数二十年的品牌演绎,YOJION凭借尖端科技与&白嫩肌肤尤物&的理念,矢志不渝的为全世界的爱美人士奉献最优质的祛痘护肤产品。
尤肌净肤套装 完美祛痘四大突破
突破一:清除毒素
体内毒素的淤积是痘痘痤疮的根源,所以排毒是祛痘消痤的首要任务。尤肌净肤套装中的祛痘洁面乳具有快速的通透性,易于吸收,快速达到体内,清除皮肤底层的毒素,提高皮肤集体的免疫功能,增强皮肤代谢能力,改善循环,通络活血。
突破二:强力祛痘
肌肤微循环失调一直是痘痘反反复复的重要元凶。尤肌净肤套装中的芦荟祛痘精华富含MAG调控因子,其具有强力清除毛孔细菌、疏通毛孔的作用,可以快速的除掉隐藏在毛孔、毛囊内的各种细菌以及油脂、毒素等,并改善肌肤薇循环,使肌肤持久保持净白、娇嫩。
突破三:修复痘印
肌肤留下很多凸凹不平的痘印痤疮,给自己增添了很多的烦恼,尤肌净肤套装中的高效成分可以修复皮肤中的胶原蛋白,促进血液循环,及时供应修复皮肤细胞所需要的营养,可以更彻底的修复痘痕,恢复光滑有弹性的健康肌肤。
突破四:锁住精华
尤肌净肤套装中的苦参祛痘霜可以持久锁住精华,可改善并重新构架痘痘皮肤下局部薇循环,清除炎症细菌,疏通活络受损部位,使皮肤自然生长,并达到完美稳定的水平台,使肌肤持久保持水润健康。
购买尤肌请认真以下联系方式:
各种痘痘疑难问题,专业祛痘专家尤肌帮你解决,呵护您的面部,给您最好保障:
问题:你们的产品有副作用吗?
尤肌美容顾问:首先,产品通过了国家相关职能部门要求的QS质量安全认证、卫生许可证、生产许可证、执行标准;其次,纯净、天然和安全是我们对产品最基本也是最重要的要求,到目前还没有顾客反馈产品给他们带来任何后遗症及毒副作用!
问题:好多年的痘痘问题了,用尤肌仍然有效果吗?
答:完全可以。痘痘问题并非是什么不治之症,而痘痘问题与能否再次成功祛痘没有任何联系,只是痘痘问题有很多年的话, 其调理需要的时间可能相对要长一点,但并不影响整体的效果。我们这里5年以上痘痘问题的,都重新获得性感曲线了。
问题:购买你们的产品有什么保障呢?
尤肌美容顾问:我们有以下4个方面的保障,您完全放心购买使用: 1、大品牌、好品质&&畅销产品,数万次临床试验,会员用户超100万人次; 2、权威&&国家质量检测报告、激素检测报告、疾病预防中心检测报告、卫生部特妆许可证; 3、专业&&专为亚洲女性量身研制瘦身产品; 4、服务&&后期会有一对一的美容老师帮您做专业指导。确保您能够达到一个理想效果。分类: |出尔反尔 德国政府撤回对中国FGC收购爱思强许可|德国|爱思强|宏芯_新浪财经_新浪网
出尔反尔 德国政府撤回对中国FGC收购爱思强许可
新浪美股 北京时间24日下午路透讯 德国政府已撤回对中资企业收购本国芯片设备制造商爱思强(Aixtron)的批准,为这项6.7亿交易在最后阶段设置了意想不到的障碍。爱思强的股价受此影响大幅下跌。
爱思强周一宣布,经济部撤回了9月8日授予中国福建宏芯基金(FGC)的批准,并宣布计划重启对这项并购交易的评估。
中资投资者进行的多起并购交易,促使德国政府考量是否需要更多审核,来保护关键技术。中国家电制造商美的集团今年以45亿欧元,收购德国工业机器人制造商库卡(Kuka)。中国三安光电股份有限公司表示,已就可能的收购或合作与德国照明企业欧司朗接触。
FGC对爱思强的收购要约已于上周五结束。FGC称,截至上周五北京时间晚20点,对爱思强约65%股份已付清,较接受期结束早10小时,这足够让交易获得通过。
截至周一北京时间17:03,爱思强在法兰克福股市下跌35.3欧分,报5.447欧元,跌幅6.09%。目前未能立即联系到德国经济部对此置评。(完)
责任编辑:李兀 SF053
文章关键词:
您可通过新浪首页顶部 “”, 查看所有收藏过的文章。
看过本文的人还看过
请用微博账号,推荐效果更好!