JVM相关知识

  • java 程序的执行过程是 java文件先被编译器编译成字节码文件, 字节码文件再被类加载器加载, 然后交给JVM执行引擎去执行,在这个执行过程,JVM 需要有一段空间来哦存储相关信息,这段空间就是运行时数据区域, Runtime Data Area
  • Runtime Data Area 包含5 部分 Java栈(VM Stack),本地方法栈(Native Method Stack) , 程序计数器 (Pogram Counter Register),堆 (Heap) ,方法区(Method Area)
  • Java 程序创建的对象都放在 Java 堆里
  • Java 堆存储的全是对象, 不存储基本类型和对象引用 , 只存放对象本身 .JVM只有一个heap区,被所有线程共享
  • Java 栈 ,每个线程都有一个 stack 区 , 栈只保存基本数据类型的对象和自定义对象的引用, 注意是引用, 不是对象本身,
    对象本身存储在 Java堆中. 每个栈中的数据都是私有的,其他栈不能访问 ; 栈又分为 3 个部分 : 基本数据类型变量区 ,
    执行环境上下文, 操作指令区. stack 是一个先进后出的数据结构,通常保存方法中的参数,局部变量
  • Java 堆 heap 区又分为 Eden Space(伊甸园)、Survivor
    Space(幸存者区)、Tenured Gen(老年代-养老区)Perm Gen(永久代)。GC(gabage collection)
  • JVM 垃圾回收过程 对象在Eden Space创建,当Eden Space满了的时候,gc就把所有在Eden Space中的对象扫描一次,把所有有效的对象复制到第一个Survivor Space,同时把无效的对象所占用的空间释放。当Eden Space再次变满了的时候,就启动移动程序把Eden Space中有效的对象复制到第二个Survivor Space,同时,也将第一个Survivor Space中的有效对象复制到第二个Survivor Space。如果填充到第二个Survivor Space中的有效对象被第一个Survivor Space或Eden Space中的对象引用,那么这些对象就是长期存在的,此时这些对象将被复制到Permanent Generation。

参考博文链接
java栈、堆、方法区详解 https://www.cnblogs.com/hqji/p/6582365.html
Java内存与垃圾回收调优 http://www.importnew.com/14086.html
深入理解JVM之JVM内存区域与内存分配
https://blog.csdn.net/USTC_Zn/article/details/54912367

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值