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

国外营销型网站东莞常平学校网站建设

国外营销型网站,东莞常平学校网站建设,服务专业的品牌建站公司,阿里云域名官网这里写目录标题 java内存区域程序计数器虚拟机栈本地方法栈堆方法区运行时常量池 对象的创建 java内存区域 Java 虚拟机在执行 Java 程序的过程中会把它管理的内存划分成若干个不同的数据区域#xff1a; 程序计数器虚拟机栈本地方法栈堆方法区 程序计数器 记录下一条需要… 这里写目录标题 java内存区域程序计数器虚拟机栈本地方法栈堆方法区运行时常量池 对象的创建 java内存区域 Java 虚拟机在执行 Java 程序的过程中会把它管理的内存划分成若干个不同的数据区域 程序计数器虚拟机栈本地方法栈堆方法区 程序计数器 记录下一条需要执行的虚拟机字节码指令的地址 字节码解释器通过改变程序计数器来依次读取指令从而实现代码的流程控制如顺序执行、选择、循环、异常处理。在多线程的情况下程序计数器用于记录当前线程执行的位置从而当线程被切换回来的时候能够知道该线程上次运行到哪儿了。 虚拟机栈 虚拟机栈是描述java方法执行的线程内存模型是线程私有生命周期同线程一样。 方法调用的数据需要通过栈进行传递每一次方法调用都会有一个对应的栈帧被压入栈中每一个方法调用结束后都会有一个栈帧被弹出。 栈由一个个栈帧组成而每个栈帧中都拥有局部变量表、操作数栈、动态链接、方法返回地址。和数据结构上的栈类似两者都是先进后出的数据结构只支持出栈和入栈两种操作。 局部变量表 主要存放了编译期可知的各种数据类型boolean、byte、char、short、int、float、long、double、对象引用reference 类型它不同于对象本身可能是一个指向对象起始地址的引用指针也可能是指向一个代表对象的句柄或其他与此对象相关的位置 操作数栈主要作为方法调用的中转站使用用于存放方法执行过程中产生的中间计算结果。另外计算过程中产生的临时变量也会放在操作数栈中。 动态链接 主要服务一个方法需要调用其他方法的场景。当一个方法要调用其他方法需要将常量池中指向方法的符号引用转化为其在内存地址中的直接引用。动态链接的作用就是为了将符号引用转换为调用方法的直接引用。 Java 方法有两种返回方式一种是 return 语句正常返回一种是抛出异常。不管哪种返回方式都会导致栈帧被弹出。也就是说 栈帧随着方法调用而创建随着方法结束而销毁。无论方法正常完成还是异常完成都算作方法结束。 这个内存区域规定了两类异常状态 一是StackOverFlowError 异常这个在方法出现无无限递归是就会出现原因是线程请求栈的深度超过当前 Java 虚拟机栈的最大深度二是OutOfMemoryError异常如果栈的内存大小可以动态扩展 如果虚拟机在动态扩展栈时无法申请到足够的内存空间则抛出OutOfMemoryError异常 本地方法栈 和虚拟机栈作用类似区别是虚拟机栈为虚拟机执行 Java 方法 也就是字节码服务而本地方法栈则为虚拟机使用到的本地方法服务 堆 虚拟机中所管理的内存最大的一块区域作用是为java对象分配内存。 Java 堆是垃圾收集器管理的主要区域因此也被称作 GC 堆Garbage Collected Heap。从垃圾回收的角度由于现在收集器基本都采用分代垃圾收集算法所以 Java 堆还可以细分为新生代和老年代再细致一点有Eden、Survivor、Old 等空间。进一步划分的目的是更好地回收内存或者更快地分配内存。这个后面讲垃圾回收时会细讲。 堆这里最容易出现的就是 OutOfMemoryError 错误并且出现这种错误之后的表现形式还会有几种比如 java.lang.OutOfMemoryError: GC Overhead Limit Exceeded当 JVM 花太多时间执行垃圾回收并且只能回收很少的堆空间时就会发生此错误。java.lang.OutOfMemoryError: Java heap space :假如在创建新的对象时, 堆内存中的空间不足以存放新创建的对象, 就会引发此错误 方法区 方法区和堆一样是线程共享的内存区域它用于存储被虚拟机加载的类信息、字段信息、方法信息、常量、静态变量、即时编译器编译后的代码缓存等数据。 永久代和元空间是实现方法区的两种方式 从JDK6开始HotSpot就开始放弃永久代逐步采用本地内存元空间来实现方法区 永久代有 -XXMaxPermSize JVM 的上限不设置也有默认大小无法进行调整而元空间使用的是本地内存受本机可用内存的限制虽然元空间仍旧可能溢出但是比原来出现的几率会更小。 当元空间溢出时会得到如下错误java.lang.OutOfMemoryError: MetaSpace 你可以使用 -XXMaxMetaspaceSize 标志设置最大元空间大小默认值为 unlimited这意味着它只受系统内存的限制。-XXMetaspaceSize 调整标志定义元空间的初始大小如果未指定此标志则 Metaspace 将根据运行时的应用程序需求动态地重新调整大小。 元空间里面存放的是类的元数据这样加载多少类的元数据就不由 MaxPermSize 控制了, 而由系统的实际可用空间来控制这样能加载的类就更多了。 在 JDK8完全放弃了永久代的概率改用了使用本地内存的元空间来代替。 相对堆而言垃圾收集行为在这个区域是比较少出现的但并非数据进入方法区后就“永久存在”了。这个区域的内存回收目标主要是针对常量池的回收和对类型的卸载但条件比较苛刻所以这个区域的回收效果比较难令人满意。 判断一个类是否无用 该类所有的实例都已经被回收也就是Java堆中不存在该类及其任何派生子类的实例。加载该类的类加载器已经被回收这个条件除非是经过精心设计的可替换类加载器的场景如OSGi、JSP的重加载等否则通常是很难达成的。该类对应的java.lang.Class对象没有在任何地方被引用无法在任何地方通过反射访问该类的方法。 Java虚拟机被允许对满足上述三个条件的无用类进行回收这里说的仅仅是“被允许”而并不是和对象一样没有引用了就必然会回收。 运行时常量池 方法区的一部分Class 文件中除了有类的版本、字段、方法、接口等描述信息外还有用于存放编译期生成的各种字面量Literal和符号引用Symbolic Reference的 常量池表(Constant Pool Table) 这部分内容将在类加载后存放在方法区的运行时常量池 字符串常量池 是 JVM 为了提升性能和减少内存消耗针对字符串String 类专门开辟的一块区域主要目的是为了避免字符串的重复创建。 JDK1.7 之前字符串常量池存放在永久代。JDK1.7 字符串常量池和静态变量从永久代移动了 Java 堆中。这是因为永久代方法区实现的 GC 回收效率太低只有在整堆收集 (Full GC)的时候才会被执行 GC。Java 程序中通常会有大量的被创建的字符串等待回收将字符串常量池放到堆中能够更高效及时地回收字符串内存。 运行时常量池、方法区、字符串常量池这些都是不随虚拟机实现而改变的逻辑概念是公共且抽象的Metaspace、Heap 是与具体某种虚拟机实现相关的物理概念是私有且具体的。 对象的创建
http://www.zqtcl.cn/news/149746/

相关文章:

  • 企业网站的开发流程个人免费建网站
  • 旅游网站平台建设方案策划书wordpress 自建cdn
  • 网站开发回访话术内容电商网站有哪些
  • 网络广告投放网站网站如何做关
  • 葫芦岛住房和城乡建设厅网站野望王绩
  • 小说网站怎么做网站建设需求分析班级
  • 开设购物网站的方案网站免费seo
  • 免费手机h5模板网站模板下载wordpress所有插件
  • 北京做网站开发公司wordpress主题创建后门
  • 企业门户网站建设内容企业建设网站的功能是什么意思
  • 做a的网站有哪些在国外做网站推广
  • 做外贸网站设计上需要注意什么python做音乐网站
  • 英语门户网站织梦源码wordpress 推荐插件
  • 学做衣服网站有哪些网站建设算入会计分录
  • 京东网站开发技术织梦网站如何做404
  • 论坛类网站开发屏蔽wordpress缩略图
  • 南宁市两学一做网站logo设计网站官网
  • 中国建设工程造价管理协会网站查询网站开发者的设计构想
  • 华强北网站建设设计素材网站p开头的
  • 怎样让网站快速收录利用数据库修改wordpress密码
  • 网站建设群发广告词做网站首页多少钱
  • 黑彩网站建设中企动力 网站价格
  • 上海营销型网站报价深圳企业网站制作设计
  • 网站清理通知北京电商购物网站
  • 新开传奇网站180合击创建一个个人网站需要多少钱
  • 郑州建网站哪家好深圳企业网站制作公司介绍
  • 企业网站百度收录桂林网站建设价格
  • 砀山做网站的公司wordpress微视频主题
  • 免费的企业网站cms注册网站后邮箱收到邮件
  • 网站推广排名教程怀化职院网站