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

网站 页面风格 建设西安seo外包

网站 页面风格 建设,西安seo外包,一个人做网站 优帮云,全国文明城市创建知识问答2019独角兽企业重金招聘Python工程师标准>>> 首先来说下为什么会有逃逸分析 我们都知道Java对象都是分配在在堆上的,在过往的认识中,一直是以这样的方式存在的,但是从Java7开始支持对象的栈分配和逃逸分析机制。 然后我们来说说具…

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

首先来说下为什么会有逃逸分析

我们都知道Java对象都是分配在在堆上的,在过往的认识中,一直是以这样的方式存在的,但是从Java7开始支持对象的栈分配和逃逸分析机制。

然后我们来说说具体什么是逃逸分析

逃逸分析是一种能有效减少对象在堆上分配和同步负载的跨函数数据流分析算法,逃逸分析通俗的说就是一个对象的指针被多个线程和方法引用时,那我们就称为这个对象发生了逃逸。

逃逸分析的基本行为就是分析对象动态作用域:当一个对象在方法中被定义后,它可能被外部方法所引用。逃逸分析只能在JIT里完成,不能在静态编译时进行。

逃逸分析又分为方法逃逸和线程逃逸。

方法逃逸:例如作为调用参数传递到其他方法中。
线程逃逸:有可能被外部线程访问到,譬如赋值给类变量或可以在其他线程中访问的实例变量。

主要涉及三种场景,分别是全局变量赋值、方法返回值、实例引用传递。

package me.stormma.gc;
/*** <p>Created on 2017/4/21.</p>** @author stormma** @title <p>逃逸分析</p>*/
public class EscapeAnalysis {public static B b;/*** <p>全局变量赋值发生指针逃逸</p>*/public void globalVariablePointerEscape() {b = new B();}/*** <p>方法返回引用,发生指针逃逸</p>* @return*/public B methodPointerEscape() {return new B();}/*** <p>实例引用发生指针逃逸</p>*/public void instancePassPointerEscape() {methodPointerEscape().printClassName(this);}class B {public void printClassName(EscapeAnalysis clazz) {System.out.println(clazz.getClass().getName());}}
}

逃逸分析主要分为两部分,一个是Java虚拟机进行的逃逸分析,一个是根据逃逸分析原理去优化自己的代码

我们先来说下Java虚拟机的逃逸分析

1.堆对象变成栈对象,一个方法中的对象没有发生逃逸,那么该对象就很有可能被分配在栈上

2.同步消除,逃逸分析可以分析出某个对象是否只有一个线程访问,如果是只有一个线程访问,那么对该对象的同步操作就可以消除,就样就能大大提高并发性和性能。

3.矢量替代,逃逸分析如果发现对象的内存存储结构不需要连续进行的话,就可以将对象的部分甚至全部都保存在CPU寄存器内

下面我们来说下对象的内存分配

为对象分配空间的任务等同于把一块确定大小的内存从Java堆中划分出来。

指针碰撞和空闲列表

指针碰撞对于垃圾收集算法为Serial,ParNew等带compact过程的收集器,该分配算法是假设堆中内存是决对规整的,空闲的在一边,非空闲的在另一边,中间有个指针作为指示器,再要进行内存分配时,只是把指针向空闲的那边移动一段和对象大小相等的空间。

空闲列表只是对于垃圾收集算法为CMS这种基于Mark-sweep算法的收集器,该分配算法是假设堆中的内存是纵横交错的,空闲的和非空闲的交错在一起,对于这种虚拟机就必须维护一个列表,记录那些块是可用的,在要进行内存分配时,从列表中找出一块分配给划分给对象实例,并更新列表上的记录。这种分配方式称为空闲列表。

TLAB

线程本地分配缓冲区(Thread Local Allocation Buffer),由于Java对象一般分配在堆上,在有多个线程需要在堆上申请空间时,那么需要对这些对象的申请进行同步,在有多个对象进行申请时,就会照成分配的效率非常低下,那么使用TLAB就可以避免这种竞争。

TLAB本身占用eden空间,默认是开启的,在开启TLAB的情况下,虚拟机会为每个线程分配一个TLAB空间,开启的设置是:-XX:+UserTLAB,而-XX:+TLABWasteTargetPercent是设置TLAB空间占用eden的空间大小

 

转载于:https://my.oschina.net/u/1262062/blog/1790125

http://www.lbrq.cn/news/2727613.html

相关文章:

  • 网站建设历程厦门人才网官网招聘信息网
  • 专业做尼泊尔的旅行网站抖音seo系统
  • 国内外网站建设企业互联网推广
  • 外贸网站建设收款通道网络培训机构排名前十
  • 仿魔酷阁网站源码北京seo网站推广
  • 建设网站证青海网站seo
  • 宁夏建设监理协会网站在线培训系统
  • 怎么建个废品网站湖南网站seo地址
  • 烟台网站建设的公司成都百度seo推广
  • 网站滚动栏特效模板html优化大师网页版
  • 做一个网站开发要多少钱北京搜索引擎优化经理
  • 做网站去哪里投放广告网店运营培训哪里好
  • 环保网站开发seo关键词排名技术
  • 网站新闻怎么写自己怎样推广呢
  • No家电网站建设关键词推广优化排名品牌
  • 上海建筑设计院待遇怎么样抖音seo怎么收费
  • 企业门户管理系统怎么优化推广自己的网站
  • 怎么做网站游戏网站优化招商
  • 做logo什么网站seo快排技术教程
  • 建设银行中国网站软件推广平台有哪些?哪个比较好
  • 创意产品设计网站推荐品牌运营包括哪些内容
  • 网站建设webmeng今日深圳新闻最新消息
  • 做网站 网上接单15个常见关键词
  • 海口专业网站制作策划百度seo白皮书
  • h3c路由器怎么做网站映射如何进行网络推广和宣传
  • 陕西省建设八大员官方网站网站建设黄页免费观看
  • 可以做样机图的网站seo线上培训班
  • 公司网站制作注意什么卡一卡二卡三入口2021
  • 网站如何做长尾词排名谷歌广告联盟官网
  • 品牌的佛山网站建设怎么找拉新推广平台
  • 安卓11 12系统修改定制化_____列举与安卓 9、10 系统在定制化方面的差异与权限不同
  • 疏老师-python训练营-Day46通道注意力(SE注意力)
  • 利用Minicsv库解析csv文件的c程序及读入测试
  • 使用Docker容器化Python测试Pytest项目并配置GitHub Actions CI/CD流程
  • 【161页PPT】智慧方案企业数字化转型概述(课件)(附下载方式)
  • 切换VSCODE 中的默认 shell