美文网首页
JVM浅析之二:运行时数据区域

JVM浅析之二:运行时数据区域

作者: 无为无悔 | 来源:发表于2016-09-16 15:52 被阅读0次

下面从线程共享角度来说明JVM运行时数据区域

线程私有:
  1. PC寄存器:存放线程内执行指令的地址

  2. JVM栈:存放基本类型局部变量、引用局部变量、方法参数、方法返回值以及异常表
    :java.lang.StackOverflowError通常是由于栈使用不当造成,例如递归造成栈深度过大,栈的分配空间本身不大,应谨慎使用,虽然可以-Xss自定义,但是正因为栈很小,所以才有相对于堆寻址快的特点

  3. 本地方法栈:与上一个栈不同的是,仅支持native方法

线程共享:
  1. 堆:存放this以及new出来的实例,只存数组和引用类型,GC围绕着堆空间来运行,对未引用的实例进行销毁,释放空间以及将内存空间做紧凑处理
    :java.lang. OutOfMemoryError一般是由于堆使用不当造成,例如数组过于庞大,或集合内数据引用不当,内存无法释放,程序死循环等。可以通过命令-Xms和-Xmx对JVM进行调优,调的过大会造成空间的浪费,碎片过多,影响GC效率,调的过小会抛OOM异常或者造成GC过于频繁,所以应根据实际运行情况来调整

  2. 方法区:存放永久代,也叫非堆内存,存放类型信息(类名,属性名,方法名以及修饰符),即唯一的class实例和static变量以及常量。Hotspot将分代GC扩展到此位置,不过此区域GC执行频率非常低,一般只有full GC才会涉及

  3. 运行时常量池:是方法区的一部分,.class文件中除了有类的版本、字段、方法、接口等描述信息外,还有一项信息是常量池,用于存放编译器生成的各种符号引用,这部分内容将在类加载后放到方法区的运行时常量池中

相关文章

  • JVM浅析之二:运行时数据区域

    下面从线程共享角度来说明JVM运行时数据区域 线程私有: PC寄存器:存放线程内执行指令的地址 JVM栈:存放基本...

  • JMM与可见性

    JMM jvm运行时数据区域 Java 内存区域和内存模型是不一样的东西,内存区域是指 Jvm 运行时将数据分区域...

  • Java内存管理

    2.9 JVM内存管理 2.9.1 运行时数据区域 JVM所管理的内存可以分为一下几个运行时数据区域: 其中方法区...

  • jvm内存模型及GC记录

    在jvm中有一块非常重要的区域,就是jvm运行时数据区。今天对该区域做下总结和记录: 在讨论jvm运行时数据区前,...

  • jvm 运行时数据区-01

    jvm 运行时数据区 jvm 运行时数据区 ,将内存划分为5个区域,java 代码在运行时 类里面的 组成部分 分...

  • JVM虚拟机内存模型

    本文主要根据JDK1.8讲解JVM虚拟机JVM运行时内存区域从上图我们可以看到JVM在运行时的一、JVM虚拟机数据...

  • JVM(一)---- 总结与专题目录

    JVM(一)---- 总结与专题目录JVM(二)----Java运行时数据区域JVM(三)----垃圾收集算法及S...

  • JVM(五)----虚拟机类加载机制

    JVM(一)---- 总结与专题目录JVM(二)----Java运行时数据区域JVM(三)----垃圾收集算法及S...

  • JVM(二)----Java运行时数据区域

    JVM(一)---- 总结与专题目录JVM(二)----Java运行时数据区域JVM(三)----垃圾收集算法及S...

  • JVM(三)----垃圾收集算法及Safe Point介绍

    JVM(一)---- 总结与专题目录JVM(二)----Java运行时数据区域JVM(三)----垃圾收集算法及S...

网友评论

      本文标题:JVM浅析之二:运行时数据区域

      本文链接:https://www.haomeiwen.com/subject/sxkiettx.html