JVM

.java-编译后-.class-classloader加载到jvm中

JVM中内存主要分为:

线程共享数据区(方法区、堆)

GC回收主要回收区

非线程数据共享区 线程私有数据(程序计数器、本地方法栈、虚拟机栈)

程序计数器 记录当前线程执行的位置行数,每个线程都有对应的程序计数器

虚拟机栈超出深度会报StackOverflowError(死循环递归 方法太多),outOfMemoryError 内存溢出

虚拟机栈中有N个栈帧方法调用太多时会StackOverflowError

栈帧StackFrame: 每个方法被执行都会在虚拟机栈中创建一个栈帧,每个栈帧包含局部变量表、操作数栈、动态链接、返回地址 参数和局部变量保存在局部变量表中

本地方法栈和虚拟机栈类似

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 内存溢出和内存泄漏的区别 内存溢出:out of memory,是指程序在申请内存时,没有足够的内存空间供其使用,...
    Aimerwhy阅读 756评论 0 1
  • 这篇文章解释了Java 虚拟机(JVM)的内部架构。下图显示了遵守Java SE 7 规范的典型的 JVM 核心内...
    饮墨飨书阅读 711评论 0 1
  • 第一步,了解JVM基本概念,基本结构。 第二步,了解JVM中线程私有区和公有区。 第三步,了解线程与Java内存模...
    Arya鑫阅读 1,223评论 0 10
  • 01 可能我撞了南墙才会回头吧 可能我见了黄河才会死心吧 可能我偏要一条路走到黑吧 可能我还没遇见 那个他吧 02...
    伊凌L阅读 87评论 0 1
  • 有付出就一定有收获,守的云开见日出
    FineYoga李阅读 266评论 0 0