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

南京网站优化公司营销培训课程2022

南京网站优化公司,营销培训课程2022,微信官网weixinqqcom,wordpress底部链接修改Java虚拟机运行时数据区结构如图所示 程序计数器 程序计数器#xff08;Program Counter Register#xff09;是一块较小的内存空间#xff0c;它可以看作是当前线程所执行的字节码的行号指示器。 多线程切换时#xff0c;为了能恢复到正确的执行位置#xff0c;每条线程…Java虚拟机运行时数据区结构如图所示 程序计数器 程序计数器Program Counter Register是一块较小的内存空间它可以看作是当前线程所执行的字节码的行号指示器。 多线程切换时为了能恢复到正确的执行位置每条线程都需要有一个独立的程序计数器各条线程之间计数器互不影响独立存储这类区域称为“线程私有”内存。此内存区域是唯一一个在Java虚拟机规范中没有规定任何OutOfMemoryError情况的区域。 Java虚拟机栈 Java虚拟机栈Java Virtual Machine Stacks也是线程私有的它的生命周期与线程相同。 每个方法在执行的同时会创建一个栈帧Stack Frame)用于存储 局部变量表。用于保存方法参数和方法内的局部变量在编译阶段就确定了局部变量表的大小。保存有 基本数据类型。boolean、byte、char、short、int、float、long、double对象引用。可能是对象引用指针也可能是指向引用对象的句柄或者其他相关位置。returnAddress类型。指向一个字节码指令的地址。操作数栈。当方法执行和字节码指令执行时操作数栈从局部变量表复制常量或变量入栈随后出栈返回给局部变量表或者方法调用者。动态链接。相对应的是静态链接。静态链接是指将调用方法的符号引用转换为直接引用的过程称为静态链接。在代码编译阶段可知。动态链接是指被调用的目标方法在编译期无法被确定下来只能够在程序运行期将方法的符号引用转换为直接引用。方法出口。 正常完成出口。方法正常退出时恢复上层方法的局部变量表和操作数栈把返回值(如果有的话)压入调用者的操作数栈中调整PC计数器的值以指向方法调用指令后的下一条指令。异常完成出口。由异常处理器表控制。 StackOverflowError异常。虚拟机栈如果配置固定深度当线程请求深度大于虚拟机允许的深度将抛出StackOverflowError异常。OutOfMemoryError异常。虚拟机栈如果配置动态扩展当扩展时无法申请到足够大的内存将抛出OutOfMemoryError异常。 本地方法栈 本地方法栈Native Method Stack与虚拟机栈所发挥的作用是非常相似的它们之间的区别不过是虚拟机栈为虚拟机执行Java方法也就是字节码服务而本地方法栈则为虚拟机使用到的Native方法服务。 有的虚拟机栈和本地方法栈会合二为一。 本地方法栈区域也会抛出StackOverflowError和OutOfMemoryError异常。 Java堆 Java堆Java Heap是Java虚拟机所管理的内存中最大的一块。Java堆是被所有线程共享的一块内存区域在虚拟机启动时创建。此内存区域的唯一目的就是存放对象实例几乎所有的对象实例都在这里分配内存。所有的对象实例以及数组都要在堆上分配。 从内存回收角度看java堆可以分为 Eden空间From Survivor空间To Survivor空间 从内存分配的角度看java堆可以分为多个线程私有的分配缓冲区Thread Local Allocation BufferTLAB。 Java堆可以处于物理上不连续的内存空间中只要逻辑上是连续的即可就像我们的磁盘空间一样。 当前主流的虚拟机都是按照可扩展来实现的通过-Xmx和-Xms控制如果堆中没有内存可以完成实例分配并且无法再扩展将会抛出OutOfMemoryError异常。 -Xms堆内存的最小Heap值默认为物理内存的1/64但小于1G。默认当空余堆内存大于指定阈值时JVM会减小heap的大小到-Xms指定的大小。-Xmx堆内存的最大Heap值默认为物理内存的1/4。默认当空余堆内存小于指定阈值时JVM会增大Heap到-Xmx指定的大小。 方法区 方法区Method Area与Java堆一样是各个线程共享的内存区域它用于存储已被虚拟机加载的 类信息常量静态变量即时编译器编译后的代码 方法区还有一个别名叫做Non-Heap非堆目的是与java堆区分开。 由于垃圾回收行为较少出现在方法区所以很多人更愿意称方法区为“永久代”Permanent Generation这是不合适的。在更新版本的HotSpot虚拟机中已经把原本放在永久代的字符串常量池移出。并非数据进入了方法区就如“永久代”的名字一样永远存在了事实上由于低版本的HotSpot虚拟机对方法区未完全回收而产生了很多bug导致内存泄漏的问题。 当方法区无法满足内存分配需求时将抛出OutOfMemoryError异常。 运行时常量池 class文件中的常量池Constant Pool Table用于存放编译期生成的各种字面量和符号引用这部分内容将在类加载后进入方法区的运行时常量池中存放。 Java语言并不要求常量一定只有编译期才能产生也就是并非预置入Class文件中常量池的内容才能进入方法区运行时常量池这种特性被开发人员利用得比较多的便是String类的intern()方法。 当常量池无法再申请到内存时会抛出OutOfMemoryError异常。 直接内存 在JDK 1.4中新加入了NIONew Input/Output类引入了一种基于通道Channel与缓冲区Buffer的I/O方式它可以使用Native函数库直接分配堆外内存然后通过一个存储在Java堆中的DirectByteBuffer对象作为这块内存的引用进行操作。这样能在一些场景中显著提高性能因为避免了在Java堆和Native堆中来回复制数据。
http://www.dnsts.com.cn/news/35720.html

相关文章:

  • 正规的扬中网站建设厦门市住宅建设办公室网站
  • 南宁市网站维护与推广公司2345网址导航开创中国
  • 横岗网站设计企业自己建网站怎么建
  • 网页设计与网站建设中的热点是什么申请个人网站怎么申请
  • 做的好看的pc端网站网页设计版权信息代码
  • seo怎么做网站排名建设网银怎么提高转账限额
  • 免费模版网站福州 网站建设
  • 南昌网站建设大全文字域名可以做网站
  • 网站开发需要哪些文档小视频网站源码
  • 自己做外贸网站wordpress打开速度慢 插件
  • 网站建设购买数据库的流程图wordpress 打赏不能用
  • 温州网站建设网络广州市民网页官网
  • 做团餐 承包食堂的企业网站如何注册公司网站免费注册
  • 电信做网站吗江苏城乡建设
  • 做照片视频的网站做网站要准备
  • 单页网站如何制作重庆有几个区几个县
  • 做的网站在百度上搜不出来网站哪个公司做的好
  • 企业门户网站建设思路做木质的网站
  • 我的班级网站模板微信小程序源码网
  • 代码库网站建设网站方案
  • 网站建设技术网重庆万州网站建设
  • 网站开发公司杭州网站建设商城网站建设论文
  • 公司最近想做个网站怎么办机关单位网站建设合同
  • 有没有网站专门做cnc招聘短网址生成 在线生成
  • 部队门户网站建设方案龙华做网站的
  • 怎么做直播室的网站网站建设流程详细
  • 天津网站开发建设报名系统网站
  • 网站开发平面设计师岗位要求sogo提交网站入口
  • 新建网站费用在线制作表白网页浪漫
  • 公司网站备案流程18芯城网站开发案例