zoukankan      html  css  js  c++  java
  • 快速串讲——JVM内存的区域划分

    目的

    • 快速定位JVM内存泄漏或者溢出等问题。
    • 面试基础题,加分项。

    文章持续更新,微信搜索「万猫学社」第一时间阅读,关注后回复「电子书」,免费获取12本Java必读技术书籍。

    程序计数器(Program Counter Register)

    • 记录当前线程所执行的字节码的行号。
    • 依赖其实现分支、循环、跳转、异常处理、线程恢复。
    • Natvie 方法时,其的值就为空。
    • Java 虚拟机规范中唯一没有规定内存溢出的区域。
    • “线程私有”的内存区域。

    文章持续更新,微信搜索「万猫学社」第一时间阅读,关注后回复「电子书」,免费获取12本Java必读技术书籍。

    虚拟机栈(Virtual Machine Stacks)

    • 其生命周期与线程相同。
    • 存储局部变量表、操作数栈、动态链接、方法出口等信息。
    • 方法被执行的时候创建一个栈帧并入栈。
    • 方法执行完成的时候对应栈帧出栈。
    • 栈的深度过大时,抛出 StackOverflowError 。
    • 线程数过多时,抛出 OutOfMemoryError 。
    • “线程私有”的内存区域。

    文章持续更新,微信搜索「万猫学社」第一时间阅读,关注后回复「电子书」,免费获取12本Java必读技术书籍。

    本地方法栈(Native Method Stacks)

    • 为虚拟机使用到的 Native 方法服务。
    • 栈的深度过大时,抛出 StackOverflowError 。
    • 线程数过多时,抛出 OutOfMemoryError 。
    • “线程私有”的内存区域。

    文章持续更新,微信搜索「万猫学社」第一时间阅读,关注后回复「电子书」,免费获取12本Java必读技术书籍。

    堆(Java Heap)

    • 用于存放对象实例,是JVM占用内存最大一块区域。
    • 垃圾收集器管理的主要区域。
    • 使用分代收集算法时,堆被细分为新生代和老年代,新生代再细分为Eden空间、 From Survivor 空间、 To Survivor 空间。
    • 在HotSpot虚拟机中,通过-Xmx和-Xms控制堆的大小,通过-Xmn控制新生代的大小。
    • 堆可以处于物理上不连续的内存空间中,只要逻辑上是连续的即可。
    • 没有内存完成实例分配时,抛出 OutOfMemoryError 。
    • “线程共享”的内存区域,线程共享的堆中又可能划分出多个线程私有的分配缓存区(Thread Local Allocation Buffer,TLAB)。

    文章持续更新,微信搜索「万猫学社」第一时间阅读,关注后回复「电子书」,免费获取12本Java必读技术书籍。

    方法区(Method Area)

    • 存储已被JVM加载的类信息、常量、静态变量、即时编译器编译后的代码。
    • 回收目标主要是针对常量池的回收和对类型的卸载。
    • 可以选择不实现垃圾收集。
    • 当方法区无法满足内存分配需求时,将抛出 OutOfMemoryError 。
    • JDK6 使用永久代实现方法区。
    • JDK7 中永久代的字符串常量池被移出。
    • JDK8 使用元空间实现方法区。
    • “线程共享”的内存区域。

    文章持续更新,微信搜索「万猫学社」第一时间阅读,关注后回复「电子书」,免费获取12本Java必读技术书籍。

    总结

    • 程序计数器:当前线程所执行的字节码的行号指示器。
    • 虚拟机栈:Java方法执行的内存模型,用于存储局部变量表、操作数栈、动态链接、方法出口等信息。
    • 本地方法栈:本地方法执行的内存模型,和虚拟机栈非常相似,其区别是本地方法栈为 JVM 使用到的 Native 方法服务。
    • :用于存储对象实例,是垃圾收集器管理的主要区域。
    • 方法区:用于存储已被JVM加载的类信息、常量、静态变量、即时编译器编译后的代码等数据。

    微信公众号:万猫学社

    微信扫描二维码

    关注后回复「电子书」

    获取12本Java必读技术书籍

    作者:万猫学社
    出处:http://www.cnblogs.com/heihaozi/
    版权声明:本文遵循 CC 4.0 BY-NC-SA 版权协议,转载请附上原文出处链接和本声明。
    微信扫描二维码,关注万猫学社,回复「电子书」,免费获取12本Java必读技术书籍。
  • 相关阅读:
    【CompOFA】2021-ICLR-CompOFA Compound Once-For-All Networks For Faster Multi-Platform Deployment-论文阅读
    【NAT】2021-TPAMI-Neural Architecture Transfer-论文阅读
    【CBAM】2018-ECCV-CBAM: Convolutional block attention module-论文阅读
    【CafeNet】2021-ICLR-Locally Free Weight Sharing for Network Width Search-论文阅读
    【ManiDP】2021-CVPR-Manifold Regularized Dynamic Network Pruning-论文阅读
    【AttentiveNAS】2021-CVPR-AttentiveNAS Improving Neural Architecture Search via Attentive Sampling-论文阅读
    【SCAN】2019-NIPS-SCAN: A Scalable Neural Networks Framework Towards Compact and Efficient Models-论文阅读
    【AKD】2020-CVPR-Search to Distill Pearls are Everywhere but not the Eyes-论文阅读
    【Dynamic Convolution】2020-CVPR-Dynamic Convolution Attention over Convolution Kernels-论文阅读
    【DNA】2020-CVPR-Blockwisely Supervised Neural Architecture Search with Knowledge Distillation-论文阅读
  • 原文地址:https://www.cnblogs.com/heihaozi/p/14950212.html
Copyright © 2011-2022 走看看