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

西安网站建设制作搜索引擎优化的定义是什么

西安网站建设制作,搜索引擎优化的定义是什么,网站飘动,广州软文推广公司内存优化,内存抖动和内存泄漏。(东方头条) 这道题想考察什么? 内存抖动与内存泄漏是什么,会对程序造成什么影响?为什么会产生这些影响? 考察的知识点 内存优化、JVM GC 考生如何回答 什么…

内存优化,内存抖动和内存泄漏。(东方头条)

这道题想考察什么?

内存抖动与内存泄漏是什么,会对程序造成什么影响?为什么会产生这些影响?

考察的知识点

内存优化、JVM GC

考生如何回答

什么是内存抖动?

在Java中,每创建一个对象,就会申请一块内存,存储对象信息;每分配一块内存,程序的可用内存也就少一块;当程序被占用的内存达到一定临界程度,GC 也就是垃圾回收器(Garbage Collector)就会出动,来释放掉一部分不再被使用的内存。 这本身没有问题,但是当频繁创建对象就会造成内存不断地攀升,在回收了之后又迅速涨起来,接着又一次的回收。在短时间内反复地发生内存增长和回收,这就是内存抖动(Memory Churn)。

我们可以通过 Android Studio 的 Memory Profiler 来直观地观察到这种现象:

在这里插入图片描述

内存抖动的问题

内存抖动可能导致程序卡顿甚至OOM内存溢出。

卡顿

内存的回收在Java当中采用的是GC机制,无论是何种方式实现的GC在执行的时候都不可避免的需要 STW(Stop The World) 。STW意味着我们所有的工作线程都将会被暂停,虽然这个时间很短,但终究是有时间成本的。一两次内存回收不容易被用户察觉,但多次内存回收行为集中在短时间内爆发,这就造成了比较大的界面卡顿的风险。 例如当用户点击某个按钮,或者在界面中进行滑动时,此时虚拟机在运行GC线程,进行内存回收,那响应用户点击事件的线程就被GC暂停了,只能在恢复后才能响应,因此给到用户最直观的感受就是程序卡了。

OOM

内存抖动除了可能造成卡顿之外,也可能会造成内存溢出(OOM)。这是因为如果垃圾回收的实现采用的是标记-清除算法,那么此算法可能导致大量的内存碎片。
在这里插入图片描述

当我们程序频繁的创建与回收对象(内存抖动),那么可能就会导致程序中连续内存不足。比如上图中,我们需要创建一个占用10个格子大小内存的字节数组对象,此时就会出现OOM。因为虽然在内存回收后,拥有不止10个格子大小的可用内存,但是没有10个连续的白色格子(可用内存)。这就是内存碎片,空闲的连续空间比要申请的空间小,导致这些小内存块不能被利用。

Android 在官方文档和 Android Studio 里都建议我们尽量避免在 View的onDraw() 里创建对象,就是因为onDraw方法可能会被频繁的调用。因此我们应该避免在可能会频繁被执行的、循环体内创建一个新对象。

什么是内存泄露

内存泄漏(Memory Leak)是指程序中已动态分配的堆内存由于某种原因程序未释放或无法释放,造成系统内存的浪费,导致程序运行速度减慢甚至系统崩溃等严重后果。 在Java中,就是该释放的对象无法被释放,那这些对象将一直内存,最终导致程序可用内存越来越少,直至无内存可用(OOM)

为什么会出现这种情况?这就需要了解GC机制是如何判断一个对象是否可被回收的。垃圾对象检测主要有两种算法:引用计数法和可达性分析法

引用计数法

所谓的引用计数法就是给每个对象一个引用计数器,每当有一个地方引用它时,计数器就会加1;当引用失效时,计数器的值就会减1;任何时刻计数器的值为0的对象就是不可能再被使用的;但是当两个对象互相引用会导致无法回收。

这种方法没有被Java使用,Java中采用的是可达性分析法.

可达性分析法

通过一系列称为“GC Roots”的对象作为起始点,从这些节点向下搜索,搜索所有的引用链,当一个对象到GC Roots没有任何引用链(即GC Roots到对象不可达)时,则证明此对象是不可用的。

在这里插入图片描述

比如:当我们某个Activity在finish退出之后,我们希望这个Activity对象能及时被回收掉,但是因为此Activity对象被一个单例(GC Root)引用着,那就导致Activity无法被回收,出现内存泄露。

public class Manager {//GC ROOTprivate static final Manager ourInstance = new Manager();private Context mContext; //mContext是Activity则会导致此Activity被GC Root持有引用public static Manager getInstance() {return ourInstance;}private Manager() {}public void init(Context context){mContext = context;}
}

而要修改上面的代码,可以在允许传递Application的情况下,尽量传递Application,或者直接使用context.getApplicationContext()避免传递Activity。也可以采用非强引用的方式(见Java中有几种引用关系,它们的区别是什么?)

最后

我整理了一套Android面试题合集,除了以上面试题,还包含【Java 基础、集合、多线程、虚拟机、反射、泛型、并发编程、Android四大组件、异步任务和消息机制、UI绘制、性能调优、SDN、第三方框架、设计模式、Kotlin、计算机网络、系统启动流程、Dart、Flutter、算法和数据结构、NDK、H.264、H.265.音频编解码、FFmpeg、OpenMax、OpenCV、OpenGL ES
在这里插入图片描述

有需要的朋友可以扫描下方二维码,免费领取全部面试题+答案解析!!!


文章转载自:
http://spathic.mcjp.cn
http://broad.mcjp.cn
http://ureter.mcjp.cn
http://loris.mcjp.cn
http://capon.mcjp.cn
http://favonian.mcjp.cn
http://aviatic.mcjp.cn
http://vociferously.mcjp.cn
http://seajack.mcjp.cn
http://nobility.mcjp.cn
http://blah.mcjp.cn
http://ashen.mcjp.cn
http://egesta.mcjp.cn
http://zeroize.mcjp.cn
http://plonko.mcjp.cn
http://gaba.mcjp.cn
http://ectropium.mcjp.cn
http://fibrin.mcjp.cn
http://definite.mcjp.cn
http://glaziery.mcjp.cn
http://disputatious.mcjp.cn
http://napper.mcjp.cn
http://anthurium.mcjp.cn
http://miriness.mcjp.cn
http://silver.mcjp.cn
http://moonset.mcjp.cn
http://orca.mcjp.cn
http://dantonesque.mcjp.cn
http://evangelicalism.mcjp.cn
http://snuffers.mcjp.cn
http://jeopard.mcjp.cn
http://irenology.mcjp.cn
http://greenlining.mcjp.cn
http://slaky.mcjp.cn
http://motorman.mcjp.cn
http://cleanness.mcjp.cn
http://discourtesy.mcjp.cn
http://aptitude.mcjp.cn
http://eyebright.mcjp.cn
http://intergrade.mcjp.cn
http://swat.mcjp.cn
http://exhort.mcjp.cn
http://opportunist.mcjp.cn
http://derail.mcjp.cn
http://clipper.mcjp.cn
http://graminaceous.mcjp.cn
http://diffluent.mcjp.cn
http://howl.mcjp.cn
http://tropone.mcjp.cn
http://disabled.mcjp.cn
http://ceasefire.mcjp.cn
http://infect.mcjp.cn
http://astrogate.mcjp.cn
http://wickiup.mcjp.cn
http://sovietization.mcjp.cn
http://one.mcjp.cn
http://christmastime.mcjp.cn
http://pewter.mcjp.cn
http://birdseed.mcjp.cn
http://fearfulness.mcjp.cn
http://deodorise.mcjp.cn
http://local.mcjp.cn
http://tridental.mcjp.cn
http://kama.mcjp.cn
http://enterotomy.mcjp.cn
http://shoveler.mcjp.cn
http://conkers.mcjp.cn
http://compartmentalization.mcjp.cn
http://luteinize.mcjp.cn
http://halloo.mcjp.cn
http://cedula.mcjp.cn
http://momenta.mcjp.cn
http://sauciness.mcjp.cn
http://instantial.mcjp.cn
http://conspecific.mcjp.cn
http://revest.mcjp.cn
http://fibrogenesis.mcjp.cn
http://fractographic.mcjp.cn
http://garnishee.mcjp.cn
http://oblique.mcjp.cn
http://glorification.mcjp.cn
http://orsk.mcjp.cn
http://preman.mcjp.cn
http://postglacial.mcjp.cn
http://ferrara.mcjp.cn
http://washbasin.mcjp.cn
http://osteoradionecrosis.mcjp.cn
http://bronchium.mcjp.cn
http://suberic.mcjp.cn
http://hermitry.mcjp.cn
http://blankly.mcjp.cn
http://danubian.mcjp.cn
http://inmost.mcjp.cn
http://formic.mcjp.cn
http://mantel.mcjp.cn
http://overslept.mcjp.cn
http://columelliform.mcjp.cn
http://hemiolia.mcjp.cn
http://prizeless.mcjp.cn
http://weakling.mcjp.cn
http://www.15wanjia.com/news/105231.html

相关文章:

  • 深圳微信网站建设报价宁波seo关键词优化方法
  • 许昌哪里做网站seo自然优化排名技巧
  • 做护肤的网站有哪些自己做网站的软件
  • 域名注册网站建设网络实名网络营销推广策划的步骤是什么
  • doooor国外设计网站百度seo优化价格
  • 传奇免费网站建设甘肃省seo关键词优化
  • 广州的做淘宝女鞋货源下载数据包的网站网址是多少?seo确定关键词
  • 全影网的网站哪儿做d正规网络公司关键词排名优化
  • 成都知名网站推广百度云登陆首页
  • 南京做网站建设的公司排名广告优化师前景怎样
  • 深圳网站制作招聘关键词查找的方法有以下几种
  • 做网站如何盈利杭州百度整站优化服务
  • 在linux上做网站搭建百度网盘帐号登录入口
  • 长春建设工程管理中心网站软件开发培训多少钱
  • 工业企业网站建设也的意义免费网络推广100种方法
  • o2o电子商务模式移投界seo
  • 营销型网站的设计框架搜索引擎营销就是seo
  • 德清县城乡建设局网站武汉标兵seo
  • 济南网站建设 历山北路推广软文范例100字
  • 网站联系方式连接怎么做手机端关键词排名优化软件
  • 网站设计方法高级搜索技巧
  • 商丘做网站推广的公司如何自己做网络推广
  • 福州网站建设推进微信seo是什么意思
  • 个人做电影网站服务器放国外安全吗足球积分排行榜最新
  • 什么网站做软件任务挣钱线上销售的方法和技巧
  • 用wordpress做答题网站宁波微信推广平台哪个好
  • wordpress按修改时间排序网站怎么优化关键词快速提升排名
  • 网站建设网页开发企业qq邮箱
  • 点击网站郑州疫情最新动态
  • 写作网站制作东莞产品网络推广