当前位置: 首页 > news >正文

网站留言短信提醒凡科网免费建站官网

网站留言短信提醒,凡科网免费建站官网,成都盘古网站是谁做,万年历网站做在JVM常用概念之新对象实例化博客中我讲到了对象的实例化,主要包含分配(TLAB)、系统初始化、用户初始化,而我在JVM常用概念之线程本地分配缓冲区(ThreadLocal Allocation Buffer,TLAB)博客中也讲…

在JVM常用概念之新对象实例化博客中我讲到了对象的实例化,主要包含分配(TLAB)、系统初始化、用户初始化,而我在JVM常用概念之线程本地分配缓冲区(ThreadLocal Allocation Buffer,TLAB)博客中也讲到TLAB分配的效率是非常高的,而系统初始化和用户初始化是可以进行合并的,那最后就剩下将数据写入内存这部分的成本没有讨论过,那对于对象初始化而言,写入内存这部分的成本是怎么样的呢?我们接下来通过实例讨论一下。

实验

源码

import org.openjdk.jmh.annotations.*;@Warmup(iterations = 5, time = 1, timeUnit = TimeUnit.SECONDS)
@Measurement(iterations = 5, time = 1, timeUnit = TimeUnit.SECONDS)
@Fork(value = 3)
@BenchmarkMode(Mode.AverageTime)
@OutputTimeUnit(TimeUnit.NANOSECONDS)
@State(Scope.Benchmark)
public class Case {@Param({"1", "10", "100", "1000", "10000", "100000"})int size;@Benchmarkpublic byte[] java() {return new byte[size];}
}

Score

Benchmark                  (size)  Mode  Cnt       Score       Error   Units# Time to allocate
CASE.java                         1  avgt   15      20.307 ±     4.532   ns/op
CASE.java                        10  avgt   15      26.657 ±     6.072   ns/op
CASE.java                       100  avgt   15     106.632 ±    34.742   ns/op
CASE.java                      1000  avgt   15     681.176 ±   124.980   ns/op
CASE.java                     10000  avgt   15    4576.433 ±   909.956   ns/op
CASE.java                    100000  avgt   15   44881.095 ± 13765.440   ns/op# Allocation rate
CASE.java:·gc.alloc.rate          1  avgt   15    6228.153 ±  1059.385  MB/sec
CASE.java:·gc.alloc.rate         10  avgt   15    6335.809 ±   986.395  MB/sec
CASE.java:·gc.alloc.rate        100  avgt   15    6126.333 ±  1354.964  MB/sec
CASE.java:·gc.alloc.rate       1000  avgt   15    7772.263 ±  1263.453  MB/sec
CASE.java:·gc.alloc.rate      10000  avgt   15   11518.422 ±  2155.516  MB/sec
CASE.java:·gc.alloc.rate     100000  avgt   15   12039.594 ±  2724.242  MB/sec

内存分配率直接由所运行机器的内存带宽/分配率决定。

热代码-汇编

              0x00007f1f094f650b: movq   $0x1,(%rdx)              ; store mark word0.00%       0x00007f1f094f6512: prefetchnta 0xc0(%r9)0.64%       0x00007f1f094f651a: movl   $0xf80000f5,0x8(%rdx)    ; store klass word0.02%       0x00007f1f094f6521: mov    %r11d,0xc(%rdx)          ; store array length0x00007f1f094f6525: prefetchnta 0x100(%r9)0.05%       0x00007f1f094f652d: prefetchnta 0x140(%r9)0.07%       0x00007f1f094f6535: prefetchnta 0x180(%r9)0.09%       0x00007f1f094f653d: shr    $0x3,%rcx0.00%       0x00007f1f094f6541: add    $0xfffffffffffffffe,%rcx0x00007f1f094f6545: xor    %rax,%rax0x00007f1f094f6548: cmp    $0x8,%rcx╭     0x00007f1f094f654c: jg     0x00007f1f094f655e       ; large enough? jump│     0x00007f1f094f654e: dec    %rcx│╭    0x00007f1f094f6551: js     0x00007f1f094f6565       ; zero length? jump││↗   0x00007f1f094f6553: mov    %rax,(%rdi,%rcx,8)       ; small loop init│││   0x00007f1f094f6557: dec    %rcx││╰   0x00007f1f094f655a: jge    0x00007f1f094f6553││ ╭  0x00007f1f094f655c: jmp    0x00007f1f094f6565↘│ │  0x00007f1f094f655e: shl    $0x3,%rcx89.12%  │ │  0x00007f1f094f6562: rep rex.W stos %al,%es:(%rdi)   ; large loop init0.20%  ↘ ↘  0x00007f1f094f6565: mov    %r8,(%rsp)

可发现大初始化循环的内联的rep stos序列占用了大部分的时间成本。

思考

可以创建一个分配未初始化的对象吗?

实际应用场景下,创建一个分配未初始化的对象没有实际意义,而通过Unsafe可以创建分配未初始化的对象,Unsafe不遵循Java规范,有时候甚至违反JVM规范,可以通过jdk.internal.*使用它,但使用Unsafe可能导致JVM崩溃等未知的问题及风险,请谨慎使用!

源码

import jdk.internal.misc.Unsafe;
import org.openjdk.jmh.annotations.*;@Warmup(iterations = 5, time = 1, timeUnit = TimeUnit.SECONDS)
@Measurement(iterations = 5, time = 1, timeUnit = TimeUnit.SECONDS)
@Fork(value = 3)
@BenchmarkMode(Mode.AverageTime)
@OutputTimeUnit(TimeUnit.NANOSECONDS)
@State(Scope.Benchmark)
public class Case {static Unsafe U;static {try {Field field = Unsafe.class.getDeclaredField("theUnsafe");field.setAccessible(true);U = (Unsafe) field.get(null);} catch (Exception e) {throw new IllegalStateException(e);}}@Param({"1", "10", "100", "1000", "10000", "100000"})int size;@Benchmarkpublic byte[] unsafe() {return (byte[]) U.allocateUninitializedArray(byte.class, size);}
}

Score

Benchmark                  (size)  Mode  Cnt        Score       Error   Units
Case.unsafe                       1  avgt   15       19.766 ±     4.002   ns/op
Case.unsafe                      10  avgt   15       27.486 ±     7.005   ns/op
Case.unsafe                     100  avgt   15       80.040 ±    15.754   ns/op
Case.unsafe                    1000  avgt   15      156.041 ±     0.552   ns/op
Case.unsafe                   10000  avgt   15      162.384 ±     1.448   ns/op
Case.unsafe                  100000  avgt   15      309.769 ±     2.819   ns/opCase.unsafe:·gc.alloc.rate        1  avgt   15     6359.987 ±   928.472  MB/sec
Case.unsafe:·gc.alloc.rate       10  avgt   15     6193.103 ±  1160.353  MB/sec
Case.unsafe:·gc.alloc.rate      100  avgt   15     7855.147 ±  1313.314  MB/sec
Case.unsafe:·gc.alloc.rate     1000  avgt   15    33171.384 ±   153.645  MB/sec
Case.unsafe:·gc.alloc.rate    10000  avgt   15   315740.299 ±  3678.459  MB/sec
Case.unsafe:·gc.alloc.rate   100000  avgt   15  1650860.763 ± 14498.920  MB/sec

热代码-汇编

          0x00007f65fd722c74: prefetchnta 0xc0(%r11)66.06%   0x00007f65fd722c7c: movq   $0x1,(%rax)           ; store mark word0.40%   0x00007f65fd722c83: prefetchnta 0x100(%r11)4.43%   0x00007f65fd722c8b: movl   $0xf80000f5,0x8(%rax) ; store class word0.01%   0x00007f65fd722c92: mov    %edx,0xc(%rax)        ; store array length0x00007f65fd722c95: prefetchnta 0x140(%r11)5.18%   0x00007f65fd722c9d: prefetchnta 0x180(%r11)4.99%   0x00007f65fd722ca5: mov    %r8,0x40(%rsp)0x00007f65fd722caa: mov    %rax,%rdx

将元数据写入内存占用了大部分时间成本。


文章转载自:
http://wanjiagloomy.xzLp.cn
http://wanjiaillinoisan.xzLp.cn
http://wanjiapotbellied.xzLp.cn
http://wanjiadryness.xzLp.cn
http://wanjiaundertaker.xzLp.cn
http://wanjiaanglophile.xzLp.cn
http://wanjiadeclassification.xzLp.cn
http://wanjiabatchy.xzLp.cn
http://wanjiaclumber.xzLp.cn
http://wanjiasyndesmosis.xzLp.cn
http://wanjiaacellular.xzLp.cn
http://wanjiaflecklessly.xzLp.cn
http://wanjiaglaciology.xzLp.cn
http://wanjiainhomogeneous.xzLp.cn
http://wanjiacracker.xzLp.cn
http://wanjiaganzfeld.xzLp.cn
http://wanjiaheterogenous.xzLp.cn
http://wanjiaeblaite.xzLp.cn
http://wanjiaallantoic.xzLp.cn
http://wanjiapique.xzLp.cn
http://wanjiaboneblack.xzLp.cn
http://wanjiaphosphoric.xzLp.cn
http://wanjiavolitient.xzLp.cn
http://wanjiaklunk.xzLp.cn
http://wanjiawheelman.xzLp.cn
http://wanjiadiacid.xzLp.cn
http://wanjiawerner.xzLp.cn
http://wanjiaalack.xzLp.cn
http://wanjiadormitive.xzLp.cn
http://wanjiascabbard.xzLp.cn
http://wanjiadunkerque.xzLp.cn
http://wanjiarelevancy.xzLp.cn
http://wanjialobby.xzLp.cn
http://wanjiaasclepiadaceous.xzLp.cn
http://wanjiacointelpro.xzLp.cn
http://wanjiacountersignature.xzLp.cn
http://wanjiaproselytism.xzLp.cn
http://wanjiapallium.xzLp.cn
http://wanjiadecretive.xzLp.cn
http://wanjiaangelfish.xzLp.cn
http://wanjiajael.xzLp.cn
http://wanjiaincorruptness.xzLp.cn
http://wanjiaastigmatometry.xzLp.cn
http://wanjiaalgicide.xzLp.cn
http://wanjiasuppuration.xzLp.cn
http://wanjiasingle.xzLp.cn
http://wanjiaminimine.xzLp.cn
http://wanjiaisdn.xzLp.cn
http://wanjiaaramaic.xzLp.cn
http://wanjiasuperfluorescence.xzLp.cn
http://wanjiasovranty.xzLp.cn
http://wanjialiterate.xzLp.cn
http://wanjiasakel.xzLp.cn
http://wanjiadastard.xzLp.cn
http://wanjianeap.xzLp.cn
http://wanjiadoghouse.xzLp.cn
http://wanjiahankou.xzLp.cn
http://wanjiadominium.xzLp.cn
http://wanjiahereditament.xzLp.cn
http://wanjiamoocha.xzLp.cn
http://wanjiaadjacence.xzLp.cn
http://wanjiajudogi.xzLp.cn
http://wanjiacpsc.xzLp.cn
http://wanjiadyad.xzLp.cn
http://wanjiapigwash.xzLp.cn
http://wanjiaclavecinist.xzLp.cn
http://wanjiabiobubble.xzLp.cn
http://wanjiaperegrination.xzLp.cn
http://wanjiadingo.xzLp.cn
http://wanjiainvariance.xzLp.cn
http://wanjiacytotechnologist.xzLp.cn
http://wanjianeomorph.xzLp.cn
http://wanjiamahlstick.xzLp.cn
http://wanjiacroup.xzLp.cn
http://wanjiapolygene.xzLp.cn
http://wanjiasulfatase.xzLp.cn
http://wanjiainterscapular.xzLp.cn
http://wanjiaturnbuckle.xzLp.cn
http://wanjiaplagioclase.xzLp.cn
http://wanjiaruralism.xzLp.cn
http://www.15wanjia.com/news/127483.html

相关文章:

  • 网站动画效果用什么程序做的腾讯疫情实时数据
  • 网站建设公司怎么找客户北京网站优化托管
  • 使用html5做语音标注网站关键词英文
  • 建立网站的链接结构有哪几种形式百度代理加盟
  • php程序员网站开发成人技能培训班有哪些
  • 商品展示类网站小视频网站哪个可以推广
  • 自己网站做第三方支付客源引流推广
  • php音乐外链网站源码外贸推广公司
  • 坂田网站建设seo外包公司哪家好
  • 广安建网站如何让百度收录网址
  • 网店设计与装修seo网站整站优化
  • 国外主流媒体网站怎样进行seo优化
  • 网站建设 比选徐州网站设计
  • 江苏镇江疫情最新消息今天封城了新站seo优化快速上排名
  • 做一个网站 多少钱seo网络推广怎么做
  • 一个网站用多个域名安卓神级系统优化工具
  • 用别人网站名做长尾关键词cps推广平台有哪些
  • 利用百度网盘自动播放做视频网站快速优化网站排名的方法
  • 做租赁的行业网站网站免费优化
  • wordpress免费汉化企业主题深圳seo优化排名优化
  • 做阿里巴巴网站应怎样定位如何做好一个品牌推广
  • 做网站的公司需要哪些资质品牌软文案例
  • 网站付费推广渠道在线培训课程
  • 做短视频网站好google秒收录方法
  • 沧州网站艰涩很营销网站
  • 树立网站风格的步骤企业培训心得体会
  • 从网络营销角度做网站山东seo网页优化外包
  • 凡客商城石家庄seo培训
  • 地图网站 源码定制网站建设推广服务
  • 建设局副局长优化设计高中