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

软件开发流程ppt中山网站seo优化

软件开发流程ppt,中山网站seo优化,自己做的网站怎么加入微信支付,wordpress页面定制器一、简介 JVM会加载类到内存中#xff0c;所以 JVM 中必然会有一块内存区域来存放我们写的那些类。Java中有类对象、普通对象、本地变量、方法信息等等各种对象信息#xff0c;所以JVM会对内存区域进行划分#xff1a; JDK1.8及以后#xff0c;上图中的方法区变成了Metasp…一、简介 JVM会加载类到内存中所以 JVM 中必然会有一块内存区域来存放我们写的那些类。Java中有类对象、普通对象、本地变量、方法信息等等各种对象信息所以JVM会对内存区域进行划分 JDK1.8及以后上图中的方法区变成了Metaspace——元数据区。 我们本章的目的就是介绍JVM中各块内存区域的功能其中都是存放的哪些java对象信息。 二、方法区 方法区只存在于JDK1.8以前的版本主要是存储从”.class“文件里加载进来的类包括 类的名称 、 方法信息 、 字段信息 、 静态变量 、 常量 以及 编译器编译后的代码 等。从JDK1.8开始这块区域的名字改成了元数据区Metaspace元数据区直接使用本地内存。 默认情况下元数据区会根据使用情况动态调整避免了在JDK1.8以前由于加载类过多从而出现 java.lang.OutOfMemoryError: PermGen。但也不能无限扩展因此可以使用 -XX:MaxMetaspaceSize来控制最大内存。 以上一章的示例来看Kafka.class和ReplicaManager.class加载到JVM后会放到方法区中 public class Kafka {public static void main(String[] args) {ReplicaManager manager new ReplicaManager();}}方法区/元数据区是所有线程共享的 三、程序计数器 程序计数器用来记录当前线程正在执行的字节码指令。我们还是继续以上一章的代码作为示例来讲解 public class Kafka {public static void main(String[] args) {ReplicaManager manager new ReplicaManager();manager.loadReplicaFromDisk();}}首先上面这段.java源程序会被编译成.class文件.class中存放的是JVM可以读懂的字节码比如下面这样 public java.lang.String getName();descriptor: ()Ljava/lang/String;flags: ACC_PUBLICCode:stack1, locals1, args_size10: aload_01: get_field #24: areturn当JVM加载类信息到内存之后实际就会使用自己的 字节码执行引擎 去执行这些字节码指令如下图 程序计数器的作用就在这里它会 记录当前执行的字节码指令的位置 如下图 程序计数器是 线程私有 的也就是说每个线程都有个自己的程序计数器记录当前线程执行到了哪一条字节码指令 四、Java虚拟机栈 Java虚拟机栈其实是一种表示Java方法执行的数据结构。每个方法被执行的时候都会创建一个栈帧Stack Frame用于存储 局部变量表 、 操作栈 、 动作链接 、 方法出口 等信息。每个方法从被调用到执行完成的过程其实就是一个栈帧在虚拟机栈中从入栈到出栈的过程。 下面的这段程序肯定有一个main线程来执行main()方法里面的代码方法内部我们通常会定义一些局部变量比如managerJVM中必须有一块区域来保存方法中的这些数据这个就是Java虚拟机栈Java虚拟机栈是 线程私有 的。 public class Kafka {public static void main(String[] args) {ReplicaManager manager new ReplicaManager();manager.loadReplicaFromDisk();}}public class ReplicaManager {public static void loadReplicaFromDisk() {Boolean hashFinishedLoad false;}}比如main线程执行了main()方法那么就会创建一个栈帧里面存放manager局部变量并将其压入main线程自己的Java虚拟机栈中如下图 然后main线程继续执行loadReplicaFromDisk方法遇到方法内部的hashFinishedLoad局部变量就会再创建一个栈帧压入自己的虚拟机栈中 上述就是JVM中的”Java虚拟机栈“这个组件的作用 调用任何方法时为方法创建栈帧然后入栈栈帧里存放了这个方法对应的局部变量之类的数据也包括方法执行的其它相关信息方法执行完毕后就出栈。 五、Java堆内存 Java堆内存这是JVM内存区域中最重要的一块区域存放着各种Java对象是线程共享区域。 下面代码中new ReplicaManager()创建了一个对象实例这个对象实例的相关信息就存放在Java堆内存中 public class Kafka {public static void main(String[] args) {ReplicaManager manager new ReplicaManager();manager.loadReplicaFromDisk();}}main线程在执行main()方法时会为其创建一个栈帧并入栈栈帧中的局部变量manager存放着ReplicaManager对象实例在Java堆内存中的地址 六、本地方法栈 本地方法栈其作用和Java虚拟机栈类似区别在于本地方法栈是为虚拟机所使用到的 Native方法 服务而Java虚拟机栈为虚拟机执行Java方法(也就是字节码)服务。本地方法栈也是线程私有的。 JDK中的很多底层API比如IO、NIO、网络等如果大家去看它的源码会发现很多地方是调用的native修饰的方法比如下面这样 public native int hashCode();在调用native方法时也会有线程对应的栈来保存native方法底层用到的局部变量表之类的信息这就是本地方法栈的作用。 七、总结 本章我们通过代码的执行流程讲解了JVM的内存模型读者需要重点关注方法区、程序计数器、Java虚拟机栈、Java堆内存与程序执行逻辑的关系其中Java堆内存是我们后面章节要关注的重点区域。
http://www.sczhlp.com/news/152725/

相关文章:

  • 本地网站建设开发信息大全辽宁建设工程信息网盲盒
  • 公司网站维护该谁来做seo百度网站排名研究中心关键词首页优化
  • 我有服务器和模板怎么做网站网站做推广的团队
  • 怎样网站建设与管理wordpress 联盟广告位
  • 网站手机微信三合一怎么做wordpress添加描述关键词
  • 部门网站建设工作总结项目管理过程五个阶段
  • 成都最好的汽车网站建设京东网站建设的特点
  • 个股期权网站开发中国建设银行驻莫斯科网站
  • 推荐购物网站建设网页设计师资格证查询官网
  • 视频网站建站程序视频教程网
  • 东莞建站网站模板wordpress上传设置
  • 叫别人做网站要给什么东西wordpress换语言
  • dw网站模板电商网站构建预算方案
  • 接做网站私活高安网站设计
  • 做网站的网络公司企业文化馆展厅设计
  • 德州制作网站哪家最专业房地产网站策划
  • 网站维护页面模版自己做的网站能联网吗
  • pageadmin 制作网站怎么绑定域名做游戏模板下载网站
  • 有专门做最佳推荐的网站企业门户网站源码下载
  • 一级A视网站 一级做爰片查域名注册信息
  • 大连网站怎么培训机构课程设置
  • 腾讯云怎么建网站互动案例的网站
  • 绘本馆网站建设没有服务器 怎么做网站
  • 基金网站建设网站一个网站通常包含多个网页吗
  • 网站建设中模板下载大连网站推广优化
  • logo设计网站平台如何创建网站教程
  • 晓风彩票网站建设源代码授权易云巢做网站公司
  • 杭州高端网站建设什么网站对护肤品测评做的很好
  • 网站开发技术文档 范本网站建设设计官网
  • 做衣服 网站网页qq版