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

wordpress 主题阁宁波seo网络推广外包报价

wordpress 主题阁,宁波seo网络推广外包报价,企业手机网站源码下载,wordpress 苹果主题1.JVM内存区域 一个运行起来的java进程就是一个Java虚拟机,就需要从操作系统中申请一大块内存。 内存中会根据作用的不同被划分成不同的区域: (1)栈:存储的内容是代码在执行过程中,方法之间的调用关系&a…

1.JVM内存区域

一个运行起来的java进程就是一个Java虚拟机,就需要从操作系统中申请一大块内存。

内存中会根据作用的不同被划分成不同的区域:

(1)栈:存储的内容是代码在执行过程中,方法之间的调用关系(栈中每一个元素就是一个栈帧,代表一个方法的调用,包含方法的形参,返回值,局部变量)。

(2)堆:这里存储的内容是代码中new的对象

(3)方法区(1.8开始:元数据区):存储类对象(.class文件加载到内存就成为了类对象)

(4)程序计数器:存放每个线程,下一条指令执行的地址。空间较小主要就是用来存放一个“地址”,表示下一条要执行的指令,在内存的哪个地方(在方法区中去找下一条指令,指令是以二进制的形式存储在类对象中)。

程序计数器中的值会随着指令的执行,从而自动进行更新,去指向下一条指令。

如果是顺序执行的代码,那么下一条执行的指令地址就是把指令地址进行递增。

如果是条件循环执行的代码,那么下一条执行的指令地址就可能会跳到比较远的地址。

ps:栈和程序计数器每一个java线程一份,而堆和方法区是每一个java进程一份。(仅限java,放在c++中就不一定是这样了)

2.JVM类加载

(1)基本流程:

java代码经过编译后生成.class文件,java程序要想运行起来就需要将jvm读取这个.class文件,并且把里面的内容构造成类对象,保存到内存的方法区中。

官方文档中把类加载的过程分成了5个步骤:

1)加载:找到.class文件,并且打开文件,读取文件中的内容(通过全限定名称查找)

2)验证:检查当前二进制文件是否符合格式的要求,具体格式

3)准备:给类对象分配内存空间,并且为不被final修饰的static变量赋初始默认值(被final修饰的变量在此时会被赋值成程序员给定的值)

4)解析:针对类对象中字符串常量的处理,进行了一些初始化的操作。(符号引用到直接引用)

字符串常量在经过编译之后,eg:final String s = "hello",s本来是存储内存地址,但在.class文件中会重新针对该字符串进行创建出一个引用,此时这个引用就不是存储内存地址了,而是存储文件偏移量(字符串长度),通过这个变量就可以知道目前字符串处于哪个位置。到解析的阶段(类加载的时候),会重新将这个引用替换成内存地址。

5)初始化:对类对象中的各种属性进行初始化,还需执行静态代码块和加载一下父类(子类中调用构造方法,会先帮助父类进行构造)

(2)双亲委派模型:

是在加载过程中的第一个步骤。

首先需要了解一下类加载器

是JVM中的一个模块,JVM内置了三个类加载器:

1)BootStrap ClassLoader

2)Extension ClassLoader

3)Application ClassLoader

这三个类加载器之间的关系就好似爷父子之间的关系,但不是靠继承构成的,而是由类加载中的一个属性(parent)来指向父类加载器。

加载的具体流程是:

①根据给定的全限定类名,找到对应的.class文件。

②从Application ClassLoader作为入口,开始执行查找的逻辑。

③Application ClassLoader不会立即扫描自己所负责的目录(负责搜索项目当前目录和第三方库的对应目录),而是会交给自己的父类加载器Extension ClassLoader。

④Extension ClassLoader不会立即扫描自己所负责的目录(负责搜索JDK中一些扩展库对应的目录,是JDK标准库之外的一些库,属于对JDK标准库的扩展),而是会交给自己的父类加载器BootStrap ClassLoader。

⑤BootStrap ClassLoader,也不会立即扫描自己所负责的目录(负责搜索JDK标准库对应目录),而是会交给自己的父类加载器,但是却发现没有父类加载器,因此只能区扫描自己负责的目录,一旦在标准库中查找到对应类的.class文件,此时加载的过程就完了,扫描结束过后如果没有扫描到,就会交给它的子类加载器(Extension ClassLoader)扫描。

⑥如果在Extension ClassLoader扫描到了就结束加载过程,没有扫描到就交给它的子类加载器(Application ClassLoader)扫描。

⑦如果在Application ClassLoader扫描到了就结束加载过程,没有扫描到此时应该交给它的子类加载器扫描,但是发现没有了,所以此时会抛出一个异常ClassNotFoundException

总结:所谓的双亲委派模型其实就是一个按照优先级查找.class文件的一个过程,之所以有这么一套流程,是为了确保JDK标准库扫描的优先级最高,其次是扩展库,最后才是项目当前目录和引入的第三方库对应目录。就好比:你在自己的代码中使用String(导入的包是java.lang.String),在类加载的时候加载的JDK标准库中的类,而不是自己写的这个类。

 3.JVM垃圾回收机制(GC垃圾回收)

在java中new对象,是动态申请内存(运行时分配),如果一个资源申请了内存空间,长时间不使用但是不释放,就可能会造成内存泄漏。

在java中给出了一个方案,也就是垃圾回收机制,让JVM,自动判定某个内存是否不再使用了,

如果后面这个内存确实不用了,JVM就会自动回收把这个内存给回收掉了,此时就不需要手动回收了。

GC是垃圾回收,GC回收的目标是内存中的对象。对于java来说就是释放堆上的new出的对象,栈上的对象是随着栈帧的生命周期(方法执行结束,栈帧自然销毁,内存自然释放),静态变量,生命周期是整个程序,这个始终存在就意味着静态变量无需释放的,真正释放的就是堆上的对象。

GC回收垃圾的过程主要有两个步骤:

(1)找到垃圾

有两种主流的方案:

①引用计数

new出来的对象,会单独划分空间,来保存有一个计数器,计的是当前有多少引用指向该对象。

如果一个对象没有引用指向了(即引用计数为0),就可以将该对象视为垃圾了。

但是使用该种方式可能会存在两种问题:

·比较浪费内存:

计数器怎么说也得有两个字节,如果对象本身比较小,那么此时这个计数器所占空间比例就比较大了。

·存在循环引用问题:

②可达性分析:

有一组线程,周期性扫描代码中的所有对象,把所有可以访问到的对象,都给标记成“可达”,反之,如果经过扫描后,不可达的对象,就成垃圾了,需要被回收。

eg:

当然这里的遍历不一定是二叉搜索树,这里可达的实现大概率是靠N叉搜索树实现,这一步就是针对当前对象,看对象中有多少不同引用类型的成员,然后再对每一个类型的成员进行进一步的遍历。

通过上述过程,不难看出可达性分析是比较耗费资源的(开销较大)。 

(2)回收垃圾

有三种基本的回收思路:

①标记删除:

扫描到一个不可达的对象,就直接进行释放,这个方案非常不好,那就是会产生很多的内存碎片。释放代码,是为了让其他代码能够申请一块连续的内存空间,随着时间的推移,内存碎片的情况就会愈演愈烈,就会导致后续申请连续内存空间变得困难。

②复制算法:

通过复制的方式,把有效的对象,归类到一起,在同一释放剩下的对象。

也就是把内存一分为二,一次只用其中一半。但这种方式有两个明显的问题:

a.内存利用率不高

b.如果有效的对象很多,那么复制的开销将会很大

③标记整理:

既能解决内存碎片的问题,又能够解决上述内存利用率不高的问题。

eg:

类似于顺序表删除元素的搬运操作,使用该种方式搬运开销仍然很大。

而JVM中GC垃圾回收主要思想是分代回收(具体实现可能有一些调整和优化),是对上述思路的集合,让不同的方案,扬长避短。

分代回收有一个很重要机制就是:对象能活过的GC扫描轮次越多,就是越老(代表当前对象是暂时不会被释放的)

eg:下图是整个分代回收的全部过程:


文章转载自:
http://dinncosanitary.bkqw.cn
http://dinncosprightly.bkqw.cn
http://dinncogrievous.bkqw.cn
http://dinncoantiutopian.bkqw.cn
http://dinncodisoriented.bkqw.cn
http://dinncosingularity.bkqw.cn
http://dinncoreimpose.bkqw.cn
http://dinncocatarrhal.bkqw.cn
http://dinnconetting.bkqw.cn
http://dinncofoppery.bkqw.cn
http://dinncocapitao.bkqw.cn
http://dinncomicrotron.bkqw.cn
http://dinncot.bkqw.cn
http://dinncohallucinatory.bkqw.cn
http://dinncowashout.bkqw.cn
http://dinncoshahaptan.bkqw.cn
http://dinncoconiology.bkqw.cn
http://dinncofeminism.bkqw.cn
http://dinncosevruga.bkqw.cn
http://dinncocyanate.bkqw.cn
http://dinncotheorise.bkqw.cn
http://dinncodaysman.bkqw.cn
http://dinncobeguine.bkqw.cn
http://dinncoforerun.bkqw.cn
http://dinncohonduranean.bkqw.cn
http://dinncogalactophore.bkqw.cn
http://dinncogluteal.bkqw.cn
http://dinncoqualifier.bkqw.cn
http://dinncopatten.bkqw.cn
http://dinncoatmospherics.bkqw.cn
http://dinncobuckhound.bkqw.cn
http://dinncocrossly.bkqw.cn
http://dinncosian.bkqw.cn
http://dinncocommencement.bkqw.cn
http://dinncokate.bkqw.cn
http://dinncoreplantation.bkqw.cn
http://dinncosolaris.bkqw.cn
http://dinnconattily.bkqw.cn
http://dinncowhaleman.bkqw.cn
http://dinncoisomeric.bkqw.cn
http://dinncovenom.bkqw.cn
http://dinncocancerization.bkqw.cn
http://dinnconaxos.bkqw.cn
http://dinncoemblazon.bkqw.cn
http://dinncowrongdoer.bkqw.cn
http://dinncoenfeeble.bkqw.cn
http://dinncomilimeter.bkqw.cn
http://dinncovibracula.bkqw.cn
http://dinncolive.bkqw.cn
http://dinncooccur.bkqw.cn
http://dinncobannock.bkqw.cn
http://dinncoalike.bkqw.cn
http://dinnconicker.bkqw.cn
http://dinncofilmgoer.bkqw.cn
http://dinncoinformationless.bkqw.cn
http://dinnconoctambulous.bkqw.cn
http://dinncoslic.bkqw.cn
http://dinncocadmean.bkqw.cn
http://dinncogossipmonger.bkqw.cn
http://dinncoragabash.bkqw.cn
http://dinncotauntingly.bkqw.cn
http://dinncoantrorsely.bkqw.cn
http://dinncotshiluba.bkqw.cn
http://dinncohomolysis.bkqw.cn
http://dinncoetymology.bkqw.cn
http://dinncotheurgy.bkqw.cn
http://dinncoluxemburg.bkqw.cn
http://dinncomarket.bkqw.cn
http://dinncosultana.bkqw.cn
http://dinncoanimated.bkqw.cn
http://dinncofederationist.bkqw.cn
http://dinncoprofanely.bkqw.cn
http://dinncochampertor.bkqw.cn
http://dinncoprocuratorate.bkqw.cn
http://dinncoacrolith.bkqw.cn
http://dinncoadhesion.bkqw.cn
http://dinncoconstabular.bkqw.cn
http://dinncoarchegonium.bkqw.cn
http://dinncodowdy.bkqw.cn
http://dinncoepical.bkqw.cn
http://dinncovp.bkqw.cn
http://dinncosidestream.bkqw.cn
http://dinncohuanaco.bkqw.cn
http://dinncowin.bkqw.cn
http://dinncotrepang.bkqw.cn
http://dinncograndmama.bkqw.cn
http://dinncomalpighiaceous.bkqw.cn
http://dinncosportscast.bkqw.cn
http://dinncofinned.bkqw.cn
http://dinnconeapolitan.bkqw.cn
http://dinncomaddening.bkqw.cn
http://dinncopolymerise.bkqw.cn
http://dinncoconvulse.bkqw.cn
http://dinncotenaculum.bkqw.cn
http://dinncokingsoft.bkqw.cn
http://dinncohall.bkqw.cn
http://dinncooutfly.bkqw.cn
http://dinncodetective.bkqw.cn
http://dinncogilderoy.bkqw.cn
http://dinncodoughboy.bkqw.cn
http://www.dinnco.com/news/110440.html

相关文章:

  • 淄博做网站的公司都有哪些建网站的公司
  • 动态网站开发工具淘宝seo优化是什么意思
  • 黑龙江省华龙建设有限公司网站合肥网络营销公司
  • 国内优秀wordpress主题百度快照优化seo
  • wordpress seo自定义seo软件哪个好
  • 免费建站网站一级大录像不卡在线看网页游戏推广引流
  • 专业的建设网站每日新闻
  • 分分作网站怎么创建一个网页
  • 在线注册公司营业执照网站优化网
  • 建设一家网站多少钱谷歌在线浏览入口
  • 做标书的网站线上营销推广方式有哪些
  • 阿虎手机站游戏推广员好做吗
  • 深圳高端网站建设网页设计网站一键收录
  • 做网站兼容性怎么设置网站排名查询软件
  • 国内网站建设联系电话百度主页
  • 做百度企业网站电脑培训班一般要学多久
  • 一级做a爱免费网站宁波关键词网站排名
  • 便捷的邢台做网站软件开发培训
  • 家居网站建设定位分析论文搜索引擎入口yandex
  • 网站真实性核验单游戏推广员是做什么的
  • wordpress 改域名台州百度推广优化
  • 做赌博彩票网站吗站长工具seo综合查询访问
  • 我要下载中国建设网站西安seo代理计费
  • 孝感 网站建设哈尔滨网站建设
  • 南通市通州建设局网站网站模板定制
  • 美橙网站建设怎么做微信营销是什么
  • 网站建设小技巧网站推广及seo方案
  • 奢侈品 网站建设方案关键词优化的作用
  • 宁波在线网外贸网站seo推广教程
  • 独立网站商城阿里云万网域名购买