JVM

作者: 仰望星空_27a6 | 来源:发表于2019-02-23 16:34 被阅读0次

组成部分

方法区
所有线程共享,存放`类信息`、`常量信息`、`常量池信息`、`字符串字面量`和`数字常量`
Java 堆
Java 程序中最主要的内存工作区域,存放几乎所有的对象实例,所有线程共享
Java 栈
线程私有,Java 栈在线程被创建的时候创建;
保存着`局部变量`、`方法参数`、`Java 的方法调用`、`返回值`等
局部变量表

用于报错函数的参数局部变量

操作数栈

主要保存计算过程的中间结果,存储计算过程中的临时变量

帧数据区

保存着访问常量池的指针,同事还包含一个异常处理表

本地方法栈
程序计数器
线程私有,存放入当前执行环境指针、程序计数器、操作栈指针、计算的变量指针等

JVM参数配置

Java 堆
  1. -XX:+PrintGC 打印GC日志
    2.-XX:+PrintGCDetails 查看GC详细信息,包含各个区的情况
    3.-Xms 设置初始堆大小,如:-Xms20m设置初始堆大小为20M
  2. -Xmx 设置最大堆大小,实际工作中可以将初始堆大小和最大堆大小设置相同,以减少GC次数
  3. -Xmn 设置新生代的大小,一般将新生代大小设置为整个堆空间的1/3到1/4左右
  4. -XX:SurvivorRatio 设置 eden 区和 from 或者 to 区的比例,如 -XX:SurvivorRatio=2 表示 eden/from(to)=2
  5. -XX:NewRatio 设置新生代和老年代的比例,-XX:NewRatio=2表示老年代:新生代=2:1

JVM系列三:JVM参数设置、分析

老年代
新生对象存在于 eden 区,没有GC则不会离开 Eden 区。
每经历一次GC,则年龄加一,当对象到达一定年龄,则会自动进入老年代。
  1. -XX:MaxTenuringThreshold 可以知道新生代对象经历过多少次GC后进入老年代。
  2. 大对象(新生代 eden 区无法装入时)会直接进入老年代,-XX:PretenureSizeThreshold可以指定对象大小超过多少时,自动进入老年代。
TLAB区
虚拟机对于体积不大的对象,会优先将对象分配到TLAB区
  1. -XX:-UseTLAB 不使用TLAB,默认是使用TLAB
  2. -XX:TLABSize 设置TLAB大小
  3. -XX:TLABRefillWasteFraction 设置进入TLAB空间的单个对象大小。默认64,即如果对象不大于整个TLAB空间的1/64,则在TLAB上创建对象,否则在堆上创建对象。
  4. -XX:+PrintTLAB 查看TLAB信息
  5. -XX:ResizeTLAB 自动调整 -XX:TLABRefillWasteFraction阈值。
对象分配流程
对象分配流程
Java 栈
  1. -Xss 指定线程的最大栈空间,这个参数直接决定了函数可调用的最大深度
方法区

默认 -XX:MaxPermSize为64M,如果当系统类较多的时候,可以通过设置-XX:PermSize或者-XX:MaxPermSize防止内存溢出,如:-XX:MaxPermSize=128M

相关文章

  • 深入JVM内核 目录

    深入JVM内核 目录 深入JVM内核1 初识JVM深入JVM内核2 JVM运行机制深入JVM内核3 常用JVM配置...

  • JVM内存模型(jvm 入门篇)

    概述 jvm 入门篇,想要学习jvm,必须先得了解JVM内存模型,JVM内存模型,JVM内存模型,JVM内存模型,...

  • Jvm(一)-Java虚拟机的内存管理

    [toc] JVM JVM回顾 1. 什么是 JVM JVM是Java Virtual Machine(Java虚...

  • JVM介绍系列文章

    知晓JVM系列(一):对JVM总览知晓JVM系列(二):JVM内存管理机制与优化初探知晓JVM系列(三) :常用的...

  • 科普

    1.JVM/JRE/JDK关系JVM

  • JVM

    JVM之内存模型JVM之对象定位与访问JVM之Java垃圾回收机制JVM之类加载

  • JVM

    栈容量由-Xss指定深入理解JVM—JVM内存模型 JVM内存模型和JVM参数的关系

  • JVM基础知识系列

    JVM基础系列 JVM知识点扫盲系列(1) JVM知识点扫盲系列(2) JVM内存的那些事 JVM类加载的那些事 ...

  • (过时、作废)android 多线程 — GC

    简单解析下JVM 先说下 JVM,虽然上篇文章在讲内存时介绍了 JVM ,但是我在这里还是以 JVM 开头,JVM...

  • 技术文章罗列

    JVM JVM知识点详解JVM初步诊断JVM内存模型 Java Api java8 stream Api讲解(上)...

网友评论

      本文标题:JVM

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