jvm笔记

作者: matthewfly | 来源:发表于2021-03-04 09:01 被阅读0次

一、jvm内存组成:堆、方法区、栈

  • 堆组成:新生代(eden+from+to)、老年代
  • 栈组成:java虚拟机栈、本地方法栈(执行本地方法)
  • 方法区:存放对象信息、常量、静态变量;线程共享;jdk8后移到“Metaspace”的本地内存

二、参数设置

  • 最小堆内存:-Xms
  • 最大堆内存:-Xmx(一般与-Xms一样,避免gc后重新分配内存)
  • 新生代:-Xmn(剩下堆内存为老年代)
  • 新生代最小:-XX:NewSize
  • 新生代最大:-XX:MaxNewSize
  • 每个线程堆栈:-Xss
  • 新生代、老年代比例: –XX:NewRatio (默认1:2)
  • eden/from/to:–XX:SurvivorRatio(默认8:1:1)
  • 方法区最小:-XX:PermSize(默认85M)
  • 方法区最大:-XX:MaxPermSize(默认64M)

三、gc
1.gc算法

  • 标签-清除:从根节点开始标记使用中的对象,未被标记的将清除。
  • 复制:从根节点开始标记使用中的对象,并复制到一块新的空间,完了之后清除原来整块内存空间。
  • 标记-压缩:从根节点开始标记使用中对象,之后将其整理到内存的一端,清理剩下部分。
  • 分代收集:对新生代、老年代采用不同垃圾回收算法。
  1. gc机制
  • 对新生代采用复制算法
    新生代对象存活时间短,更新频繁,适合复制算法。新生代分为eden、from、to,新建对象首先存入eden,当eden满了后,将存活对象放入from,当from也满了后将eden和from存活对象放入to,如此往复;对于复制次数达配置值(默认16)时,将对象放入老年代。
  • 老年代采用标记-清除 或 标记压缩
    老年代满了后会触发major gc或full gc,应尽量避免或减少。

参考:https://www.jianshu.com/p/895deef15808

相关文章

  • JVM学习笔记(3)-垃圾收集算法

    JVM学习笔记(1)-内存管理机制 JVM学习笔记(2)-内存分配与回收 垃圾收集算法 JVM垃圾收集算法有四种:...

  • JVM学习笔记

    JVM学习笔记 JVM简介 JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种...

  • Java笔记之 1. JVM学习

    一、 JVM学习笔记 JVM:Java Virtual MachineJVM总感觉那么的神秘,底层的东西,试着把一...

  • 第二周 JVM运行机制

    笔记 JVM启动流程启动过程如下图所示:bootup.png注释:jvm.cfg的用途:Controls the ...

  • JVM内存管理及垃圾回收机制

    JVM笔记 JDK:Java、JVM、Java API类库,是支持java程序开发的最小环境。JRE:Java A...

  • 【JVM篇】【JVM的组成】

    【JAVA】【JVM篇】【JVM的组成】 来自二线的码农笔记,用自己的理解总结知识点,互相学习 1. JVM概念 ...

  • ElasticSearchx

    ElasticSearch 笔记修改ES内存的占用:/etc/elasticsearch/jvm.options ...

  • Java运行时数据区

    原文戳这里JVM Run-Time Data Areas 下面是我阅读JVM规范的笔记。 1.单个线程的数据区(不...

  • JVM学习笔记之类装载器-ClassLoader

    JVM学习笔记之类装载器-ClassLoader 本文字数:2300,阅读耗时7分钟 JVM体系结构概览 类装载器...

  • JVM笔记

    一、JVM运行时划分的区域 1.程序计数器 用于存放当前线程下一个执行命令的指针。每个线程私有一个程序计数器。 2...

网友评论

      本文标题:jvm笔记

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