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

上海网站建设 亿速网站建设评比办法

上海网站建设 亿速,网站建设评比办法,南通建设企业网站,那个网站做直播好目录一、JVM内存区域1.1程序计数器1.2虚拟机栈1.3本地方法栈1.4堆1.5方法区二、JVM运行时内存2.1新生代(轻量级GC)2.2老年代(重量级GC)一、JVM内存区域 JVM 内存区域主要分为线程私有区域【程序计数器、虚拟机栈、本地方法栈】、线程共享区域【JAVA 堆、…

目录

      • 一、JVM内存区域
        • 1.1程序计数器
        • 1.2虚拟机栈
        • 1.3本地方法栈
        • 1.4堆
        • 1.5方法区
      • 二、JVM运行时内存
        • 2.1新生代(轻量级GC)
        • 2.2老年代(重量级GC)

一、JVM内存区域

JVM 内存区域主要分为线程私有区域【程序计数器、虚拟机栈、本地方法栈】、线程共享区域【JAVA 堆、方法区】、直接内存。

在这里插入图片描述

线程私有数据区域生命周期与线程相同, 依赖用户线程的启动/结束而创建/销毁
在 Hotspot VM 内, 每个线程都与操作系统的本地线程直接映射,
因此这部分内存区域的生命周期也可以说是和本地线程相同。

线程共享区域随虚拟机的启动/关闭而创建/销毁

直接内存并不是 JVM 运行时数据区的一部分, 但也会被频繁的使用: 在 JDK 1.4 引入的 NIO 提
供了基于 Channel 与 Buffer 的 IO 方式, 它可以使用 Native 函数库直接分配堆外内存, 然后使用
DirectByteBuffer 对象作为这块内存的引用进行操作(详见: Java I/O 扩展), 这样就避免了在 Java
堆和 Native 堆中来回复制数据, 因此在一些场景中可以显著提高性能

在这里插入图片描述

1.1程序计数器

一块较小的内存空间, 是当前线程所执行的字节码的行号指示器,每条线程都要有一个独立的程序计数器,这类内存也称为“线程私有”的内存。
正在执行 java 方法的话,计数器记录的是虚拟机字节码指令的地址(当前指令的地址)。如果是 Native 方法,则为空。
这个内存区域是唯一一个在虚拟机中不会出现 OutOfMemoryError 情况的区域

1.2虚拟机栈

是描述java方法执行的内存模型,每个方法在执行的同时都会创建一个栈帧(Stack Frame)用于存储局部变量表、操作数栈、动态链接、方法出口等信息。每一个方法从调用直至执行完成的过程,就对应着一个栈帧在虚拟机栈中从入栈到出栈的过程。

1.3本地方法栈

本地方法区和 Java Stack 作用类似, 区别是虚拟机栈为执行 Java 方法服务, 而本地方法栈则为Native 方法服务, 如果一个 VM 实现使用 C-linkage 模型来支持 Native 调用, 那么该栈将会是一个C 栈,但 HotSpot VM 直接就把本地方法栈和虚拟机栈合二为一

1.4堆

是被线程共享的一块内存区域
创建的对象和数组都保存在 Java 堆内存中
垃圾收集器进行垃圾收集的最重要的内存区域
由于现代 VM 采用分代收集算法, 因此 Java 堆从 GC 的角度还可以细分为: 新生代(Eden 区、From Survivor 区和 To Survivor 区)和老年代

1.5方法区

即我们常说的永久代(Permanent Generation), 用于存储被 JVM 加载的类信息、常量、静态变量、即时编译器编译后的代码等数据.
HotSpot VM把GC分代收集扩展至方法区, 即使用Java堆的永久代来实现方法区, 这样 HotSpot 的垃圾收集器就可以像管理 Java 堆一样管理这部分内存, 而不必为方法区开发专门的内存管理器(永久代的内存回收的主要目标是针对常量池的回收和类型的卸载, 因此收益一般很小)

二、JVM运行时内存

Java 堆从 GC 的角度还可以细分为: 新生代(Eden 区、From Survivor 区和 To Survivor 区)和老年代

在这里插入图片描述

2.1新生代(轻量级GC)

是用来存放新生的对象。一般占据堆的 1/3 空间。
由于频繁创建对象,所以新生代会频繁触发MinorGC 进行垃圾回收。新生代又分为 Eden 区、ServivorFrom、ServivorTo 三个区。

Eden 区

Java 新对象的出生地(如果新创建的对象占用内存很大,则直接分配到老年代)。当 Eden 区内存不够的时候就会触发 MinorGC,对新生代区进行一次垃圾回收

ServivorFrom

上一次 GC 的幸存者,作为这一次 GC 的被扫描者

ServivorTo

保留了一次 MinorGC 过程中的幸存者。

MinorGC 采用复制算法。

  1. eden、servicorFrom 复制到 ServicorTo,年龄+1

首先,把 Eden 和 ServivorFrom 区域中存活的对象复制到 ServicorTo 区域(如果有对象的年龄以及达到了老年的标准,则赋值到老年代区),同时把这些对象的年龄+1(如果 ServicorTo 不够位置了就放到老年区)

  1. 清空 eden、servicorFrom

然后,清空 Eden 和 ServicorFrom 中的对象

  1. ServicorTo 和 ServicorFrom 互换

最后,ServicorTo 和 ServicorFrom 互换,原 ServicorTo 成为下一次 GC 时的 ServicorFrom区。

2.2老年代(重量级GC)

主要存放应用程序中生命周期长的内存对象。

老年代的对象比较稳定,所以 MajorGC 不会频繁执行。在进行 MajorGC 前一般都先进行了一次 MinorGC,使得有新生代的对象晋身入老年代,导致空间不够用时才触发。
当无法找到足够大的连续空间分配给新创建的较大对象时也会提前触发一次 MajorGC 进行垃圾回收腾出空间。

MajorGC 采用标记清除算法:
首先扫描一次所有老年代,标记出存活的对象,然后回收没有标记的对象。
MajorGC 的耗时比较长,因为要扫描再回收。
MajorGC 会产生内存碎片,为了减少内存损耗,我们一般需要进行合并或者标记出来方便下次直接分配。
当老年代也满了装不下的时候,就会抛出 OOM(Out of Memory)异常。

http://www.sczhlp.com/news/96270/

相关文章:

  • 做图哪个网站素材多浙江方远建设集团网站
  • 合肥有做网站的吗律师网站建设公司
  • 网络搭建的相关知识桂林网站优化注意事项
  • 扬州网站开发公司电话菜鸟教程网站开发
  • 文献阅读 | AutoCodeBench
  • 【ARM Cache 及 MMU 系列文章 6.5 -- 如何进行 Cache miss 统计?】
  • 哈尔滨做网站收费广州建设银行预约公积金网站
  • 做网站一年费用长沙微网站电话号码
  • 网站备案密码网站研发流程
  • 中国空间站24小时直播入口塘沽软件开发
  • Idea win 快捷键大全
  • 华建河北住房和城乡建设厅网站手机搜索引擎排行榜
  • 永兴网站建设报价钦州 网站建设
  • 区块链网站开发费用网龙网络公司校园招聘
  • 泉州网站制作专业网站续费能自己续费吗
  • 济南网站建设公司制作北京网站制作开发公司
  • python云服务器网站开发实例西部数码 空间做2个网站
  • 临沂网站制作平台自己制作视频的软件
  • 做视频素材怎么下载网站网站建设公司一站通系统简单
  • 电商网站页面广东建设企业网站怎么样
  • VSCode+neovim工作环境快速构建
  • 25.9.12随笔联考总结
  • macos
  • 做网站需要用socket吗app设计尺寸规范
  • 免费网站建设制作哪家公司好青岛百度推广seo价格
  • 沈阳招标中心招标公告张家界专业seo优化
  • 辽宁网站建设找哪家m开头的手机网站怎么做
  • 网站定制化什么意思制作网站用c 做前台
  • 网站首页site不到 a5网站的建设模式是指什么时候
  • 城阳做网站可以做淘宝推广的网站有哪些内容