网站建设与运营众云网联做的网站效果好吗

张小明 2026/3/13 8:31:52
网站建设与运营,众云网联做的网站效果好吗,进入wordpress后,卖网站链接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进行投诉反馈,一经查实,立即删除!

网站建站推荐北师大网页制作与网站建设期末考试

NVIDIA TensorRT-LLM高性能推理框架解析 在大语言模型(LLMs)加速落地的今天,一个现实问题摆在所有AI工程团队面前:如何让百亿参数的模型不仅“能跑”,还要“跑得快、成本低、稳得住”?PyTorch 虽然训练灵活…

张小明 2026/3/11 7:20:57 网站建设

做网站为什么先交定金河南企业网站建设

5步搞定SillyTavern版本升级:告别烦恼的完整指南 【免费下载链接】SillyTavern LLM Frontend for Power Users. 项目地址: https://gitcode.com/GitHub_Trending/si/SillyTavern 还在为软件升级而头疼吗?担心升级过程中数据丢失、配置混乱&#x…

张小明 2026/3/11 7:20:52 网站建设

网站keyword如何排序网址导航123

5分钟掌握Kepler.gl:免费开源的地理空间数据可视化终极教程 【免费下载链接】kepler.gl keplergl/kepler.gl: Kepler.gl 是一个由 Uber 开发的数据可视化工具,提供了一个基于 WebGL 的交互式地图可视化平台,可以用来探索大规模地理空间数据集…

张小明 2026/3/11 9:55:58 网站建设

做瞹瞹嗳网站做公司网站哪家好

CefFlashBrowser:突破Flash访问限制的终极解决方案 【免费下载链接】CefFlashBrowser Flash浏览器 / Flash Browser 项目地址: https://gitcode.com/gh_mirrors/ce/CefFlashBrowser 当你面对那些珍贵的Flash课件、经典游戏或企业内网系统时,是否经…

张小明 2026/3/11 9:55:56 网站建设

合肥建设厅官方网站乐清门户网站建设

中文场景下Kotaemon的表现如何?实测结果令人惊喜 在企业智能化转型加速的今天,越来越多组织开始部署AI对话系统来应对海量用户咨询。然而,一个普遍存在的痛点是:通用大语言模型虽然能“说人话”,但面对专业问题时常“胡…

张小明 2026/3/11 9:55:54 网站建设

网站建设多少钱专业中国房地产信息网官网

告别网络资源下载困境:res-downloader智能下载器全面解析 【免费下载链接】res-downloader 资源下载器、网络资源嗅探,支持微信视频号下载、网页抖音无水印下载、网页快手无水印视频下载、酷狗音乐下载等网络资源拦截下载! 项目地址: https://gitcode.…

张小明 2026/3/11 9:55:52 网站建设