JVM简单介绍

JVM结构

  • 主要包含 类加载器 执行引擎 运行时数据区 本地接口

类加载器

  • ClassLoader类加载器
  • 双亲委派模型
  • 类加载过程
    • 加载
    • 连接
    • 初始化(执行静态代码块,静态变量)

JVM运行时数据区

VM Stack /Native Method Stack

Heap

存储对象或者数组的空间 线程共享 Heap划分 (年轻代,老年代)

  • Eden (新生代 new)
  • s0 幸存者区
  • s1 幸存者区
  • Tenured (对象超过某个大小,会直接放在这里)

JMM

Volatile

  • 可见性
  • 保证可见性的方法
    • Volatile
    • Synchronized
    • fianl

指令重排

  • 有序性
  • 线程串行语义
  • 怎么保证有序性

Trace跟踪参数

Heap内存分配参数

  • Xmx
  • Xms
  • Heap Memory是如何分配的

查看内存的代码

  • 设置运行参数
  • -Xmn 新生代大小 eden+2s
  • -XX:NewRatio 年轻代(eden+2s):老年代
  • -XX:SurvivorRatio 2s:eden

查看

Stack内存分配参数

-Xss 对栈的深度的影响

JVM内存回收

  • 标记-清除算法
    • 标记阶段 标记未使用
    • 清除阶段 清除未使用
    • 缺点 (空间不连续,内存碎片)
    • 优点 速度快
  • 复制算法
    • 原理 复制,整理复制内容,再清除原先内存
    • 优点:内存清理干净 缺点:浪费内存,速度慢
  • 标记-整理算法
    • 原理 整理对象,移动到内存的一端,清除其余的部分。
  • 分代收集算法

    针对不同的【内存代】进行不同的算法

垃圾收集器 (算法的具体实现)


并发: 可以同时执行 并行: 可以同时执行,但要一个让一个。


GC实现的组合方案

转载于:https://my.oschina.net/u/3945595/blog/3092680

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值