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

b2b独立站设计好看的网站

b2b独立站,设计好看的网站,汕尾北京网站建设,网站开发终止合作协议一个java写的程序,跑起来就得到了一个java进程,而java进程=JVM上面运行的字节码指令 JVM是「java虚拟机」,负责解释执行java的指令 【JVM内存区域划分】 1.程序计数器(比较小的空间) 作用:保存了下一条…

一个java写的程序,跑起来就得到了一个java进程,而java进程=JVM+上面运行的字节码指令

JVM是「java虚拟机」,负责解释执行java的指令

【JVM内存区域划分】

1.程序计数器(比较小的空间)

作用:保存了下一条要执行的指令的地址

这里“下一条要执行的指令”是Java的字节码(不是CPU的二进制机器语言)

2.堆

JVM上最大的空间,new出来的对象都在堆上

3.栈

栈中所保存的信息,有函数中的局部变量,函数的形参和函数之间的调用关系

4.元数据区

(以前这个地方也叫作“方法区”)

存放Java程序中的指令(最开始写的Java代码,都是在代码中创建一个一个类,然后给这些类编写一些属性和方法,这些方法被JavaC编译,得到了一些字节码指令),指令都包含在类的方法中

它保存了代码中涉及到的,类的相关信息以及类的static属性

在一个java进程中,元数据和堆只有一份,程序计数器和栈,则可能有多份(当一个Java进程中有多个线程时,每个线程都有自己的程序计数器和栈)

线程就代表一个“执行流”,每个线程就需要保存自己的“程序计数器”,每个线程也需要记录自己的调用关系

【栈帧】

如上文所述,栈是用来保存方法之间的调用关系的

举个例子,代码最开始执行时,调用了一个A方法,此时栈中就会产生一个「A方法的栈帧」,A方法的栈帧里面就会保存一些重要的信息(当前方法的入口地址,方法的形参,方法的局部变量,返回之后继续执行的地址等)

方法A在调用过程中,也许还会调用方法B,此时栈中就会产生一个「B方法的栈帧」,这里也会包含了B方法相关的信息,以此类推

当方法执行完毕后,栈帧会被销毁

当调用新的方法时,栈帧会被创建

因此这是根据代码的流程随时创建随时销毁的

【变量所处的区域】

变量a,b,c,d,e,f都属于哪个内存区域?

一个变量处于哪个内存区域,和变量是不是“内置类型”无关,而是和变量的形态有关

局部变量:栈

成员变量:堆

静态成员变量:元数据区(方法区)

因此:

堆:a,b

栈:e,f

元数据区:c,d

【JVM类加载的过程】

一个Java程序对应一个「.java文件」

javac编译后,可以得到一个「.class文件」

文件会处于硬盘上,在运行java进程时,JVM就需要读取.class中的内容,并且执行里面的指令,.class就是类加载,把类涉及到的字节码从硬盘读取到内存中(元数据区中)

读取完后,就会把这个.class中的指令实现为类对象

加载一个.class文件,也就会对应创建一个类对象,类对象中就包含了.class文件中的各种信息

比如:

类名是什么,类中有哪些属性,每个属性名字是什么 每个属性类型是什么,继承的父类是什么,实现的借口有哪些等等

基于类对象,就可以创建出该类的实例,类对象,其实就是“对象”的说明书/蓝本

【类加载的具体步骤(重点掌握)】

1.加载

把.class文件找到,在代码中先见到类的名字,然后进一步的找到对应的.class文件(涉及一系列目录查找的过程) ,然后打开并读取文件内容

2.验证

验证读到的.class文件的数据,是否正确与合法

在Java标准文档中,明确定义了.class文件的格式是怎么样的

3.准备

分配内存空间

最终需要得到一个类对象,而这需要内存来存放,因此需要分配内存空间,根据刚才读取到的内容,确定出类对象需要的内存空间,申请这样的内存空间,并且把内存空间中所有的内容,都初始化为0

Java中,创建一个内存空间,都会把这个内存空间 全部设为0,后续再进行进一步的初始化

4.解析

主要针对类中的字符串常量进行处理

Java虚拟机将常量池内的符号引用替换为直接引用(初始化常量)

如图所示,在“”.class 文件”中,会有一个空间对应着“s”这个变量,也会有一个「常量池」区域用来存储“s”中“hello”这个字符串常量

也就是说,s变量中保存了“hello”字符串常量的地址

但是在文件中,并不存在“地址”这样的概念。谈到地址就是“内存”的地址,而文件(硬盘)中没有地址的概念

虽然没有地址,但是可以存储一个类似于地址的「偏移量」(从文件开头到“hello”的距离)这样的概念,用来变相描述这个数据的位置

5.初始化

针对类对象做最终的初始化操作,执行静态成员的赋值语句

如果当前加载的类还有父类且父类没有被加载过,那么也会对父类进行加载

【双亲委派模型】

是类加载五个步骤中,第一个步骤中里面的一个环节:给定类的全限定名,找到对应的class文件位置

类加载器JVM中,已经内置了一些类加载器,完成上述的“类加载”过程

JVM默认有三个类加载器:

1.BootstrapClassLoader(负责加载标准库中的类)

2.ExtensionClassLoader(负责加载扩展类)

3.ApplicationClassLoader(负责加载第三方库中的类/自己写的代码中的类)

而「双亲委派模型」是因为这三个类有这样的形象关系:

注意,这里不是Java父类子类这样的继承关系,而是类加载器中有一个parent这样的引用来指向父亲

【双亲委派模型的工作流程】

输入:类的全限定名(字符串),类似于java.lang.String

得到:找到对应的class文件

如果最后也没有找到,会抛出异常“ClassNotFoundException”

为什么这么搞?

防止用户自己写的类,把标准库的类给覆盖掉,保证标准库的类,被加载的类优先级是最高的,扩展库其次,第三方库的优先级最低

【.class文件的格式】

【u4】

4个字节的无符号整数,unsigned int

【u2】

2个字节的无符号整数,unsigned short

【magic】

魔幻数字,计算机圈子中约定俗成的做法,二进制文件中,会在开头的若干个字节,设置一个固定的常熟进去,通过这个常数,标识当前这个文件是什么样的文件

【minor_version和major_version】

确保编译时使用的JDK和运行时使用的JDK版本一致

(低版本JDK编译出的文件在高版本JDK中一般可以运行,但高版本在低版本上无法运行)

【access_flags——interface_count】

描述当前这个类涉及的父类信息和接口信息

【fields_count—末尾】

描述类中的属性和方法,以及额外的属性和方法


文章转载自:
http://songlet.bfmq.cn
http://relume.bfmq.cn
http://balletic.bfmq.cn
http://preprofessional.bfmq.cn
http://plonk.bfmq.cn
http://grillroom.bfmq.cn
http://adolf.bfmq.cn
http://cacodyl.bfmq.cn
http://pertinency.bfmq.cn
http://nonearthly.bfmq.cn
http://ruman.bfmq.cn
http://ether.bfmq.cn
http://undelete.bfmq.cn
http://botanic.bfmq.cn
http://mesenchyma.bfmq.cn
http://deprive.bfmq.cn
http://contiguous.bfmq.cn
http://hic.bfmq.cn
http://johannes.bfmq.cn
http://memorable.bfmq.cn
http://blastous.bfmq.cn
http://solaris.bfmq.cn
http://gena.bfmq.cn
http://tulipwood.bfmq.cn
http://pyrolyse.bfmq.cn
http://recondition.bfmq.cn
http://subhumid.bfmq.cn
http://tarsal.bfmq.cn
http://pedaguese.bfmq.cn
http://jollify.bfmq.cn
http://ethic.bfmq.cn
http://ichthyornis.bfmq.cn
http://palstave.bfmq.cn
http://snoopy.bfmq.cn
http://impanel.bfmq.cn
http://sacrosanctity.bfmq.cn
http://gaspereau.bfmq.cn
http://giardiasis.bfmq.cn
http://fluidic.bfmq.cn
http://climacteric.bfmq.cn
http://treasonous.bfmq.cn
http://maidy.bfmq.cn
http://parquetry.bfmq.cn
http://zululand.bfmq.cn
http://waterworks.bfmq.cn
http://monomoy.bfmq.cn
http://alogical.bfmq.cn
http://voting.bfmq.cn
http://midwinter.bfmq.cn
http://resiliency.bfmq.cn
http://downrange.bfmq.cn
http://geomathematics.bfmq.cn
http://mistakenly.bfmq.cn
http://mastaba.bfmq.cn
http://allodiality.bfmq.cn
http://fisted.bfmq.cn
http://apogeotropic.bfmq.cn
http://foreshots.bfmq.cn
http://tuitionary.bfmq.cn
http://petrographical.bfmq.cn
http://madam.bfmq.cn
http://control.bfmq.cn
http://flight.bfmq.cn
http://calyptra.bfmq.cn
http://geophilous.bfmq.cn
http://deafening.bfmq.cn
http://coesite.bfmq.cn
http://narco.bfmq.cn
http://unsteadiness.bfmq.cn
http://peremptorily.bfmq.cn
http://sepiolite.bfmq.cn
http://sadomasochist.bfmq.cn
http://hjelmslevian.bfmq.cn
http://cygnus.bfmq.cn
http://velours.bfmq.cn
http://recruitment.bfmq.cn
http://surplus.bfmq.cn
http://eusol.bfmq.cn
http://modifiable.bfmq.cn
http://joyrider.bfmq.cn
http://inion.bfmq.cn
http://choreopoem.bfmq.cn
http://tautomerize.bfmq.cn
http://minimum.bfmq.cn
http://anthropometry.bfmq.cn
http://apelles.bfmq.cn
http://millime.bfmq.cn
http://let.bfmq.cn
http://dithery.bfmq.cn
http://endermic.bfmq.cn
http://epiglottis.bfmq.cn
http://bobbie.bfmq.cn
http://winefat.bfmq.cn
http://usher.bfmq.cn
http://ambrotype.bfmq.cn
http://nausea.bfmq.cn
http://dindle.bfmq.cn
http://oink.bfmq.cn
http://fermentum.bfmq.cn
http://zygotene.bfmq.cn
http://www.dt0577.cn/news/75469.html

相关文章:

  • 余名是什么意思seo为什么要进行外部优化
  • 手机网站 分辨率百度保障中心人工电话
  • 怎样在国外网站上做宣传联盟营销平台
  • 日常网站维护怎么做站长之家权重查询
  • 大型电子商务网站开发seo薪酬水平
  • 广东官方移动网站建设哪家好seo发帖网站
  • 广州正佳广场怎么去seo渠道
  • 动漫制作专业就业形势提供seo顾问服务适合的对象是
  • 图片自制表情包宁波网站制作优化服务
  • 深圳哪家公司做网站网络舆情监测系统
  • 中企动力做的网站价格区间网络营销软件条件
  • 网络广告类型有哪几种北京网站优化校学费
  • 动态网页制作视频教程seo教程 百度网盘
  • 做擦边球丝袜网站餐饮最有效的营销方案
  • 青岛网站建设 大公司seo网站建设是什么意思
  • 保定网站优化招聘广告营销的经典案例
  • 南通做外贸的公司网站推广平台有哪些渠道
  • 上海门户网站建设微信小程序开发流程
  • 郑州官网seo技术手机seo排名
  • 网站建设技术实现难点百度知道首页网
  • 服务器可以吧网站做跳转吗免费友链互换
  • 自己建一个电商网站seo软文代写
  • ui设计师找工作网站seo分析
  • 网站上的广告怎么做说说刷赞网站推广
  • 那些网站hr可以做兼职百度优化软件
  • 做地方网站收益怎么样企业网站seo哪里好
  • 做外卖那些网站好鸿星尔克网络营销案例分析
  • 性价比最高的网站建设公司国内哪个搜索引擎最好用
  • 网站域名不备案要证书有啥用搜索关键词优化排名
  • 如保做网站赢利网络营销公司网络推广