• 面试之四:JVM内存区域分配


    • 1、程序计数器(线程私有)【不会OOM
      • 记录线程执行的代码位置,每个线程各自独有。
    • 2、栈:虚拟机栈和本地方法栈(线程私有)【会OOM和StackOverflow
      • 虚拟机栈
        • 每个JAVA方法在执行时都会创建一个栈帧。
          • 用于存储局部变量表、操作数栈、动态链接、方法出口等信息。
      • 本地方法栈:同虚拟机栈。只是用于Native方法
    • 3、JAVA 堆(线程共享)【会OOM
      • 用于存放对象实例。
      • 垃圾收集器主要区域。
      • 细分为:新生代和老年代等
        • 从内存回收的角度来看,由于现在收集器基本都采用分代收集算法,所以Java堆中还可以细分为:新生代和老年代;再细致一点的有Eden空间、From Survivor空间、To Survivor空间等。
    • 4、方法区(线程共享)【会OOM(HotSpot也叫永久代)【+运行时常量池】
      • 主要存放:
        • 存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据。
      • 4.1 细分:运行时常量池(方法区的一部分)
        • 存放类加载后Class文件中的常量池信息(Class文件中除了有类的版本、字段、方法、接口等描述信息外,还有一项信息是常量池,用于存放编译期生成的各种字面量和符号引用)
    • 5、直接内存(非虚拟机运行数据的一部分,即系统中除分配给JVM虚拟机之外的内存)会OOM
      • 不是虚拟机运行时数据区的一部分,也不是Java虚拟机规范中定义的内存区域。
      • 但这部分内存也被频繁使用,也可能导致OutOfMemoryError异常。
     
  • 相关阅读:
    JavaScript中的数据类型转换
    JavaScript中的变量
    set_uid set_gid stick_bit 软硬链接
    chmod、chown、umask、lsattr/chattr
    环境变量、cp、mv、cat 等命令
    相对和绝对路径 mkdir cd rm 等命令
    linux 系统 目录,以部分及相关命令
    单用户模式 和救援模式 、以及相互登陆(免密)
    putty 、xshell的使用 和 putty 、xshell、 shell 间免密登陆
    vmware NAT 网络出现问题的解决方法
  • 原文地址:https://www.cnblogs.com/buwuliao/p/10646868.html
Copyright © 2020-2023  润新知