JVM内存模型-浅析

本文深入解析了Java虚拟机(JVM)的内存模型,包括主内存与工作内存的区别,以及程序计数器、本地方法栈等关键组件的作用。特别介绍了Java堆的结构划分,如新生代与老年代,并对JDK1.8中的元空间替代永久代进行了说明。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

JVM内存模型

Java中通过多线程机制使得多个任务同时执行处理,所有的线程共享JVM内存区域main memory,而每个线程又单独的有自己的工作内存,当线程与内存区域进行交互时,数据从主存拷贝到工作内存,进而交由线程处理(操作码+操作数)。

  • 程序计数器-当前线程所执行的字节码的行号指示器
  • 本地方法栈-虚拟机使用到的Native 方法服务
  • Java 堆-最主要的内存区域
  • Java 栈
  • 方法区

Java堆-存储结构

  • 新生代-(Eden,S1,S2)
  • 老年代-(Old Generation)
  • 永久带-运行时常量和内部字符串,永久代Hotspot虚拟机特有的概念

注意:在JDK1.8中,持久代已经更名为了元空间。

常用的JVM参数设定

常用的参数设定

  • -Xms1024M ,最小堆内存(默认为物理内存的1/64但小于1G),设置:-Xms1024M
  • -Xmx1024M,最大堆内存(默认是物理内存的1/4但小于1G),设置:-Xmx1024M
  • -XX:PermSize=64M 设置最小分配永久代空间,设置:-XX:PermSize=64M
  • -XX:MaxPermSize=128M 设置最大分配永久代空间,设置:-XX:MaxPermSize=128M
  • JDK1.8修改为-XX:MetaspaceSize=200m;-XX:MaxMetaspaceSize=256m;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值