什么网站做免单衣服郴州在哪里

张小明 2026/1/2 20:33:46
什么网站做免单衣服,郴州在哪里,着陆页设计网站国内,龙岗营销网站建设公司JVM 内存模型详解#xff08;运行时数据区 Java Memory Model#xff09;在中文语境里#xff0c;“JVM 内存模型”有两种常见指代#xff1a; 1#xff09;JVM 运行时数据区#xff08;HotSpot 里的堆、栈、元空间等#xff09;#xff0c;偏“内存结构”#xff1b…JVM 内存模型详解运行时数据区 Java Memory Model在中文语境里“JVM 内存模型”有两种常见指代1JVM 运行时数据区HotSpot 里的堆、栈、元空间等偏“内存结构”2Java Memory ModelJMM可见性/有序性/原子性规则偏“并发语义”。这份文档把两者都讲清楚并给出排障与调优落地方法。1. 一张图先建立整体视角┌─────────────── 线程私有 ────────────────┐ Java 线程 ───▶ │ 程序计数器 PC │ 虚拟机栈 │ 本地方法栈 │ └────────────────────────────────────────┘ │ ▼ ┌────────────── 线程共享 ───────────────┐ │ 堆 Heap │ │ (新生代/老年代/对象分配/GC 等) │ └───────────────────────────────────────┘ │ ▼ ┌────────────── 线程共享 ───────────────┐ │ 方法区 / 元空间 Metaspace │ │ (类元数据、常量池、方法字节码等) │ └───────────────────────────────────────┘ 另外直接内存 Direct MemoryNIO/堆外不属于运行时数据区但非常重要。2. JVM 运行时数据区HotSpot 视角2.1 程序计数器PC Register——线程私有作用记录当前线程执行到哪一条字节码指令解释器/即时编译器都需要。特点线程私有每个线程一份切换线程后能恢复到正确位置。几乎是 JVM 中唯一不会 OOM的区域。注意执行 Native 方法时PC 的值是未定义不指向字节码。2.2 虚拟机栈Java Virtual Machine Stack——线程私有组成单位栈帧Stack Frame每次方法调用入栈返回出栈。栈帧主要包含局部变量表Local Variables操作数栈Operand Stack动态链接指向运行时常量池中的符号引用解析结果方法返回地址等常见问题StackOverflowError递归太深/栈帧过大导致栈空间耗尽。OutOfMemoryError: unable to create new native thread线程太多或单个线程栈太大导致无法再创建线程本质是 OS 资源/地址空间不足。调参-Xss控制每个线程栈大小栈大单线程递归更深、但线程数上限变低栈小线程数上限高、但更易 SOE实战经验线上“线程爆炸”时盲目把-Xss调太大很容易把问题放大因为每个线程占用更多内存。2.3 本地方法栈Native Method Stack——线程私有作用执行 JNI/Native 方法时使用的栈。问题类型同样可能StackOverflowError或 OOM不同 JVM 实现表现略有差异。2.4 堆Heap——线程共享堆是 GC 主要工作区域也是对象的主要分配地。2.4.1 分代结构经典 HotSpot新生代 YoungEden S0 S1Survivor老年代 Old存放存活时间长/体积大/晋升的对象大对象/特殊对象可能直接进入老年代取决于收集器和配置JDK 21或不同 GC分代实现细节有差异但“短命对象多、长命对象少”的假设仍然成立。2.4.2 对象分配的典型路径绝大多数对象先分配在EdenMinor GC 后存活对象进入 Survivor并增加“年龄”年龄达到阈值或 Survivor 放不下 → 晋升到 OldOld 不够 → Full GC / Mixed GC / 触发 OOM取决于 GC2.4.3 TLAB线程本地分配缓冲为了减少多线程在堆上分配对象时的锁竞争JVM 给每个线程划一小块 TLAB。大多数小对象在 TLAB 内“指针碰撞”即可分配速度非常快。2.5 方法区 / 元空间Method Area / Metaspace——线程共享方法区是 JVM 规范概念HotSpot 在 JDK 8 之后用 **元空间Metaspace**实现。主要内容类元数据Class Metadata运行时常量池Runtime Constant Pool方法字节码、字段信息等JDK 7/8 时代对比JDK 7 及以前HotSpot 有永久代 PermGen在堆里的一块区域常见OutOfMemoryError: PermGen spaceJDK 8移除 PermGen改为Metaspace使用本地内存常见OutOfMemoryError: Metaspace常见 OOM 场景动态生成大量类CGLIB、Javassist、ByteBuddy、脚本引擎等且类卸载条件不满足调参-XX:MaxMetaspaceSize上限-XX:MetaspaceSize触发 GC 的阈值之一2.6 直接内存Direct Memory / Off-Heap不属于 JVM 规范的运行时数据区但在 HotSpot 中非常关键。典型来源NIOByteBuffer.allocateDirectNetty 堆外内存mmap 文件映射等风险堆看起来不大但进程 RSS 飙升最终被 OS 杀死或出现OutOfMemoryError: Direct buffer memory相关参数-XX:MaxDirectMemorySize若未设置通常与-Xmx相关联具体行为依 JVM 实现而定3. 对象在内存中的样子理解 GC 与锁很有用3.1 对象的基本布局HotSpot 常见对象头Mark Word哈希、锁状态、GC 年龄等Klass Pointer指向类元数据实例数据字段内容对齐填充按 8 字节对齐常见这也是为什么“加一个 boolean 字段不一定只多 1 字节”的原因对齐与对象头占比会影响最终大小。3.2 引用类型强/软/弱/虚强引用默认引用GC 不会回收软引用内存紧张时回收缓存场景弱引用下一次 GC 就可能回收虚引用配合引用队列做资源回收通知4. 垃圾回收GC你至少需要知道这些4.1 何为可达性分析GC Roots常见 GC Roots线程栈中的局部变量引用静态字段引用类变量JNI 引用活跃线程、锁对象等对象从 Roots 可达 → 存活不可达 → 可回收可能经历一次 finalize 复活但不建议依赖。4.2 常见 GC 事件概念层Minor GC主要回收新生代Major/Old GC回收老年代不同收集器定义略不同Full GC通常指全堆 方法区/元空间相关回收代价高4.3 你会在日志里看到什么吞吐量Throughput应用时间 / 总时间停顿时间PauseSTW 时长用户更敏感晋升失败、并发失败、空间不足等关键字建议生产环境至少打开 GC 日志并把日志输出到文件避免 STDOUT 影响容器/日志采集。5. Java Memory ModelJMM——并发的“内存规则”JMM 解决的问题不是“内存怎么分区”而是一个线程写入的变量另一个线程什么时候能看见可见性指令会不会乱序导致诡异结果有序性某些操作是不是不可分割原子性5.1 主内存与工作内存抽象模型主内存所有线程共享的变量存储工作内存每个线程对共享变量的副本寄存器/缓存/编译器优化的抽象这解释了为什么“你在一个线程里改了变量另一个线程不一定马上看到”。5.2 三大核心性质原子性单次读/写如int赋值通常是原子的i不是原子操作读-改-写三步可见性volatile、synchronized、final正确发布可以提供可见性保障有序性编译器/CPU 可能重排序只要不改变单线程语义但多线程下可能出现“先看见结果后看见原因”的诡异现象5.3 happens-before 规则非常重要理解为如果 A happens-before B那么 A 的结果对 B 可见且 A 的执行顺序排在 B 之前在 JMM 意义上。常用规则程序顺序规则同一线程内前面的操作 hb 后面的操作监视器锁规则解锁 hb 之后对同一锁的加锁volatile 变量规则对 volatile 的写 hb 之后对它的读线程启动/终止规则Thread.start()hb 线程内动作线程内动作 hbThread.join()返回传递性A hb B 且 B hb C ⇒ A hb C5.4 volatile轻量但“不是万能”volatile 提供对该变量的读写可见性对 volatile 写-读建立happens-before禁止某些重排序插入内存屏障volatile 不提供复合操作的原子性count仍然不安全适用场景状态标记如停止标志单例双重检查DCL中配合volatile避免重排序导致半初始化对象可见5.5 synchronized / Locksynchronized进入/退出监视器带来内存语义可见性 有序性同时提供互斥原子性java.util.concurrent.locks同样有 happens-before 保障基于 AQS/volatile/CAS6. 把两者串起来为什么“并发 Bug”经常像“内存问题”一个经典例子发布逸出unsafe publication线程 A new 了对象但对象内部字段还没完全写完由于重排序/缓存线程 B 可能拿到“非 null 引用”但字段仍是默认值解决正确的发布方式final字段、静态初始化、volatile 引用、加锁发布等。7. 线上排障速查非常实用7.1 判断是“堆”还是“非堆/堆外”堆 OOMOutOfMemoryError: Java heap space元空间 OOMOutOfMemoryError: Metaspace直接内存 OOMOutOfMemoryError: Direct buffer memory线程创建失败unable to create new native thread7.2 常用工具链按“上手快”排序jcmd pid VM.flags/VM.system_propertiesjcmd pid GC.heap_info/GC.class_histogramjstat -gcutil pid 1sjmap -dump:formatb,fileheap.hprof pid大堆会卡顿慎用jstack pid线程死锁/阻塞/线程爆炸JFRJava Flight Recorder低开销、强烈建议7.3 一套“先不动代码”的定位流程看错误类型heap/metaspace/direct/native thread看 GC 日志是否频繁 Full GC、晋升失败、停顿是否异常拉一次类直方图class histogram是不是某类对象激增若怀疑泄漏dump heap → MAT / VisualVM 分析 dominator tree、引用链若怀疑堆外看进程 RSS 与堆大小差异、排查 direct buffer/Netty/ mmap8. 参数与实践建议别迷信“调大内存”先明确目标低延迟还是高吞吐先收集证据GC 日志 指标停顿、吞吐、分配速率、Old 占用趋势再做改变一次只改一组参数并记录效果容器环境要特别小心确认 JVM 是否正确识别 cgroup 限制关注“堆外 元空间 线程栈 代码缓存”总和避免 OOMKilled9. 面试/工作里经常被问的点快速复习堆、栈、方法区分别存什么为什么栈线程私有i为什么不是原子volatile 的语义是什么为什么不能保证counthappens-before 有哪些规则举例说明Metaspace OOM 常见原因如何避免动态类泄漏Direct Memory 为什么会把你“阴死”如何限制与观测10. 参考阅读建议《Java 虚拟机规范》运行时数据区章节JLSJava Language Specification关于内存模型章节OpenJDK/HotSpot 源码与 JEP了解不同 GC 的演进
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

在什么网站可以做推广哪个做网站公司

你是不是在为无人机飞控系统中CAN总线通信的稳定性而苦恼?数据丢包、通信延迟、节点离线,这些看似小问题却直接影响着飞行安全。作为现代无人机通信的核心骨干,CAN总线承担着传感器数据交换、电机控制指令传递等关键任务。今天,我…

张小明 2026/1/1 21:44:51 网站建设

档案网站的建设方案百度联盟一天多少收入

Linly-Talker语音缓存机制减少重复合成耗时 在构建数字人系统的实践中,一个看似微小却影响深远的问题逐渐浮现:为什么用户每次问“你好吗?”时,系统都要重新“想一遍”怎么发音?明明这句话已经说过成百上千次了。这不…

张小明 2025/12/31 20:47:15 网站建设

用网站空间可以做有后台的网站吗公众号制作素材

还在为复杂的Elasticsearch查询语法头疼吗?每次都要编写冗长的DSL语句才能获取想要的数据?es-client正是为解决这些痛点而生的可视化Elasticsearch客户端工具,让数据管理变得像使用普通数据库客户端一样简单。 【免费下载链接】es-client ela…

张小明 2026/1/2 8:43:16 网站建设

网站里面的链接怎么做的平面设计如何接单

——基于多源视频融合的空间认知与决策推演技术体系镜像视界(浙江)科技有限公司 新计划发布会技术白皮书在新一轮城市治理、应急管理、能源安全与高安全设施智能化升级背景下,视频系统正经历从“可视化工具”向“空间认知与决策引擎”的根本…

张小明 2026/1/2 7:39:25 网站建设

网站建设合同的注意点网页制作工作网站

EmotiVoice能否替代真人配音?成本与质量对比分析 在短视频日更、播客爆发、虚拟偶像崛起的今天,内容创作者们正面临一个共同难题:如何以合理成本,持续产出富有情感温度的声音内容?传统真人配音虽然真实动人&#xff0…

张小明 2026/1/2 18:50:37 网站建设

如何管理手机网站首页网站前端怎么做

Rust 泛型与特性 引言 Rust 是一种系统编程语言,以其安全性和并发性而闻名。在 Rust 中,泛型和特性是语言的核心特性之一,它们使得 Rust 程序员能够编写更加灵活和可重用的代码。本文将深入探讨 Rust 中的泛型和特性,包括它们的基本概念、使用方法以及在实际开发中的应用…

张小明 2026/1/2 14:43:13 网站建设