2019一个网站开发要多少钱,制作网站什么制作,信产部网站备案,浙江seo在Java虚拟机#xff08;JVM#xff09;的内存管理中#xff0c;堆内存通常被划分为几个不同的区域#xff0c;以便更有效地管理和回收内存。以下是新生代#xff08;Young Generation#xff09;、老年代#xff08;Old Generation#xff09;和永久代/元空间#xf…在Java虚拟机JVM的内存管理中堆内存通常被划分为几个不同的区域以便更有效地管理和回收内存。以下是新生代Young Generation、老年代Old Generation和永久代/元空间PermGen/Metaspace的具体含义 1. 新生代 (Young Generation)
: - 新生代是Java堆内存的一部分主要用于存储新创建的对象。对象在首次分配内存时会被放入新生代。 - 新生代的特点是大量对象在此快速生成并很快消亡因此这里的垃圾回收Garbage Collection, GC非常频繁通常称为Minor GC或Young GC。 - 新生代进一步细分为 Eden 区、两个 Survivor 区例如From 和 To 区每次GC后存活下来的对象会被复制到另一个Survivor区若对象经历了一定次数的GC还存活则晋升至老年代。 2. 老年代 (Old Generation)
: - 老年代也是Java堆内存的一部分主要存放经过一定时间周期仍然存活下来的对象即经历过多次新生代GC仍然没有被回收的对象。 - 对象一旦晋升到老年代意味着它们生命周期较长老年代的垃圾回收相对较少但是一旦发生通常会是Major GC或Full GC这类GC会比Minor GC更加耗时且影响更大。 3. 永久代 (PermGen)
: - 在JDK 8及之前版本的HotSpot JVM中永久代是方法区的一个实现用于存储类信息、常量池、静态变量、方法字节码以及其他运行时常驻数据结构。 - 永久代的空间有限如果加载了大量的类或者反射操作过于频繁可能导致永久代空间不足从而抛出java.lang.OutOfMemoryError: PermGen space异常。 4. 元空间 (Metaspace)
: - 自JDK 8开始HotSpot JVM取消了永久代的概念并引入了一个新的内存区域叫做元空间Metaspace。 - 元空间同样用于存储类元数据信息但它位于本地内存Native Memory而非堆内存中这意味着它的大小不再受到JVM堆大小的限制而受限于系统的实际可用内存。 - 当类元数据的总量超过了指定阈值或者系统内存限制时将会触发类卸载机制并可能出现java.lang.OutOfMemoryError: Metaspace异常。
总结起来新生代和老年代是用来区分对象生命周期长短进而进行高效内存回收的堆内存区域而永久代在旧版JVM中是方法区的一种实现方式存储类和方法级别的元数据在新版JDK中这部分功能由元空间替代。
超市购物清单与最优路线选择 假设光头强正在超市帮熊二准备一场野餐他有一份长长的购物清单清单上的商品分布在超市不同的货架上。为了尽快买齐所有物品光头强需要规划一个最佳的行走路线。
方法一光头强按照货架顺序依次走过不管清单上的商品顺序这样可能会走回头路。
方法二光头强先查看清单并按区域归类然后制定一条尽量不走重复路线一次性拿到所有商品的路径。
查询优化器就像是在规划路线的光头强它考虑的因素包括
- 货架的位置对应数据库表的物理存储结构和索引
- 商品在货架上的位置对应数据在表中的分布情况
- 走过每个货架所需时间对应执行查询操作的成本
经过分析比较后光头强会选择一个预期耗时最少成本最低的行走路线这就是查询优化器选择执行计划的过程。在这个场景下最优路线就是执行计划旨在高效地完成“查找和获取所有商品”的任务。