java mission_使用Java Mission Control进行内存分配分析

jdk7u40自带了一个异常好用的对象,就是Java Mission Control。JRockit Misson

Control用户理应会对mission

control的许多功用异常熟习,JRockit也是一款很棒的对象。本篇文章将着重关注若何行使Java Flight

Recorder中止内存分配剖析。

jvm有着异常棒的小块内存虚拟化手艺,这会让你发生发火一种具有无限内存的错觉感,其实它的开支异长除夜。有时辰jvm需求找出此刻堆上数据是若何被行使的,并把残剩的空间扩展年夜——这就是残存收受收受接管。发生发火这类情形的启事是,jvm理想获得的物理内存是无限的,是以需求在不被行使时中止内存收受收受接管和复用。在一些时辰敏感的运用中,好比生意营业零星和通讯轨范,这些暂停是不能容忍的。有许多GC调优方法可以免这类暂停发生发火。貌似上面的谈论已跑题了。让GC变少的方法虽然是尽量增加分配内存。

有时辰,你进展找出在你的轨范中哪些地方致使了内存分配的压力。激起这类压力的启事有许多种。最浅易的一种情形多是jvm需求经常GC,而且时辰远跨越你以为的合理值。

JFR分配事宜

在HotSpot7u40中完成的Java Flight

Recorder(JFR)有两种内存分配事宜可以匡助我们找出轨范中中止内存分配的地方:TLAB中的内存分配和TLAB外的内存分配事宜。

与JDK供应的其它除夜多半事宜相相反,有一系列可在Mission

Control中中止定制的剖析接口。在中止剖析之前,我们要花上几分钟来谈论下理想的事宜。

首先,你需求确保事宜已近被记载了。假定你行使默许的模板选项,你会发明内存分配剖析选项默许是关闭的。要末掀开它,或行使剖析模板而不要行使默许模板。内存剖析选项默许关闭的启事是,它可以会发生发火太多的事宜。而且对不合的轨范它的功效消费是纷歧定的,因为不合的轨范在内存分配的情形上是差异是很除夜的。

事宜标签组中的Log标签是检查每一个零丁事宜的绝佳地址。我们来看看这里包括了哪些内容:

a4c26d1e5885305701be709a3d33442f.png

这里包括已分配的内存真实巨细、致使内存分配的客栈轨迹、分配内存的类和事宜信息。在TLAB内存分配事宜中,它们还包括分配的TLAB巨细。

需求留意的是,TLAB的内存分配事宜中并非对应每一个所在的内存分配事宜,那样太消费成本了。取而代之的是,我们只在新的TLAB中第一次分配内存时中止事宜上报。这意味着我们只获得了外埠线程的内存分配一些排序后的样本。

其余,需求留意的是我们在JRockit中行使的TLA事宜和在更生代中中止的分配是完整沟通的,除夜对象分配事宜和老生代内存分配时沟通的。不外这些在HotSpot中有点庞杂。TLAB外的内存分配事宜既可以和年迈代内存收受收受接管分配沟通,也可以和后续的Eden区及old区域的直接除夜对象分配沟通。换句话说,假定你在TLAB事宜外发明了一些少许的内存分配,你其实不需求忧郁。正常来说,这类情形长短常的少见的。是以在理想情形中这些判袂并非那末显著。

行使Allocation标签页

Allocation(分配)标签页理想上包括三个子标签页:

通用

新TLAB分配

TLAB外分配

通用标签页供应了一个总的视图和一些可用事宜的统计信息,例如对不合的事宜类型分配的总内存。凭证你主要目的的不合,看待这些信息的体式格式也会不合。上面的这个例子异常精简而且聚焦在内部TLAB分配,因为它更关注于总的内存分配压力。

a4c26d1e5885305701be709a3d33442f.png

新TLAB分配供应了三种以上专供于剖析新TLAB分配事宜的虚拟化类型:类级、线程级和剖析级的分配。剖析级分配是对这三品种型的一个庞杂的栈追踪鸠合。从上面的这个例子可以看出,Integer对象几近占到悉数零星的一切内存分配。在直方图中选择Integer类便会显示出对Integer对象的一切内存的栈轨迹鸠合,同时在这个例子中,一切的分配都来自不合个所在,正以下图展现的那样。

a4c26d1e5885305701be709a3d33442f.png

TLAB外分配的内存标签页和新TLAB标签页的责任事理沟通,仅仅在这个时辰点是不合的,虽然这些是TLAB外的事宜。

a4c26d1e5885305701be709a3d33442f.png

限制

因为新TLAB的内存分配事宜仅仅只是总的线程外埠内存分配的样本,仅仅只需一个事宜是很难声名理想情形的。更多的事宜才会有更准确的图片。其余,假定分配事宜的举动在记载时期转变异长除夜,那末这样也很难竖立一个异常有说服力外埠内存分配视图。

style="display:inline-block;width:336px;height:280px"

data-ad-client="ca-pub-9611302475373562"

data-ad-slot="8266948139">

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值