jvm解读

jvm 解读

概述:java虚拟机大体分为 方法区(也叫永久代 java8以后改为mateSpace),java堆,虚拟机栈,本地方法区,程序计数器。

  1. 方法区(线程共享)
    方法区主要作用是存放类的基本描述信息及常量池,属于线程共享,即程序的任何线程都共享此区域,并从中加载类的基本信息。方法区采用java堆的存储模式,和java堆的内存管理模式一致,垃圾回收机制一致。jdk1.8后改为mateSpace元数据空间,要注意的是元数据空间将类的基本信息存放在本地内存中,将类中的静态变量和字符串池存放在java堆中。

  2. java 堆(线程共享)
    此区域主要存放程序运行时所产生的数据,例如存放实例化的数组和对象信息,属于线程共享,所有运行时的线程所产生的数据都存放在同一块存储空间里。因为运行时所产生和销毁的对象很多,所有java堆也是垃圾回收的主要战场。

  3. 虚拟机栈(线程私有)
    每个线程启动后,jvm都会给线程分配一个独立的栈帧,一个线程的启动和结束都对应一个栈的进栈和出栈,栈中主要存放 局部变量表,动态链接,方法出口,操作数栈等信息。

  4. 本地方法区(线程私有)
    本地方法指操作系统预留的方法,作用同java堆类似。

  5. 程序计数器(线程私有)
    一块较小的内存,作用是记录当前线程所执行的 字节码的 行号指示器。

java垃圾回收机制解读

java的垃圾回收机制主要作用于java堆,其次是方法区。因为java堆主要存放运行时数据,数据更换频繁,方法区主要是回收运行时常量数据和类的卸载收益较小。

jvm垃圾回收方式分为两种:MinorGC,MajorGC
MinorGC算法:复制->清除->互换
MajorGC算法:标记->清除->整理

jvm垃圾回收主要采用分代收集算法,所以我们将java堆分为 新生代(1/3)、老年代(2/3)
新生代又分为 Eden区(8/10)、ServivorFrom(1/10),ServivorTo(1/10)三个区域,新生代采用MinorGC。
老年代采用MajorGC。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值