深入理解Java虚拟机——JVM的内存结构和内存分配策略

JVM专题 JVM 阅读详情

一、JVM内存模型

Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。这些区域都有各自的用途,以及创建和销毁的时间,有的区域随着虚拟机进程的启动而存在,有些区域则依赖用户线程的启动和结束而建立和销毁。根据《Java虚拟机规范(JavaSE 7版)》的规定,Java虚拟机所管理的内存将会包括以下几个运行时数据区域:

这里写图片描述

1、程序计数器

程序计数器(Program Counter Register)是一块较小的内存空间,可以看作是当前线程所执行的字节码的行号指示器。在虚拟机的概念模型里(仅是概念模型,各种虚拟机可能会通过一些更高效的方式去实现),字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令,分支、循环、跳转、异常处理、线程恢复等基础功能都需要依赖这个计数器来完成。

2、Java虚拟机栈

Java虚拟机栈(Java Virtual Machine Stacks)也是线程私有的,它的生命周期与线程相同。虚拟机栈描述的是Java方法执行的内存模型:每个方法在执行的同时都会创建一个栈帧(Stack Frame [1] )用于存储局部变量表、操作数栈、动态链接、方法出口等信息。每一个方法从调用直至执行完成的过程,就对应着一个栈帧在虚拟机栈中入栈到出栈的过程。

3、本地方法栈

本地方法栈(Native Method Stack)与虚拟机栈所发挥的作用是非常相似的,它们之间的区别不过是虚拟机栈为虚拟机执行Java方法(也就是字节码)服务,而本地方法栈则为

rk3576之imx415 4k@60fps 1;0;1;0;1;0;1;0;1;0;1;0;1;0; 阅读详情

相关推荐

Java千百问_07JVM架构(002)_jvm实例的结构是什么样的

点击进入_更多_Java千百问1、jvm实例的结构是什么样的在Java虚拟机规范中,一个虚拟机实例的行为主要组成部分为:子系统、内存区域、数据类型指令。 这些组件描述了JVM内部的一个抽象结构。与其说这些组成部分的目的是进行JVM内部结构的一种支配,不如说是提供一种对外部行为的严格定义,该规范定义了这些抽象组成部分的相互作用,以及Java虚拟机执行所需要的行为。了解jvm内存管理看这里:java

幽灵雾的专栏 3231

Java内存分配策略

Java内存分配策略

qq_45872465的博客 2172

Java 虚拟机面试题合集

以下代码中的 FileSystemClassLoader 是自定义类加载器,继承自 java.lang.ClassLoader,用于加载文件系统上的类。它首先根据类的全名在文件系统上查找类的字节代码文件(.class 文件),然后读取该文件内容,最后通过 defineClass() 方法来把这些字节代码转换成 java.lang.Class 类的实例。

悦分享 95

深入理解JVM : Java对象内存分配策略

不是百分之百固定的,其细节取决于当前使用的是哪一种垃圾收集器组合,还有虚拟机中与内存相关的。与生活中的贷款担保类似,老年代要进行这样的担保,前提是老年代本身还。有容纳这些对象的剩余空间,一共有多少对象会活下来在实际完成内存回收之前是无法明确知道的,所。以只好取之前每一次回收晋升到老年代对象容量的平均大小值作为经验值,与老年代的剩余空间进行比。端的情况就是内存回收后新生代中所有对象都存活),就需要老年代进行分配担保,把。对象的内存分配,往大方向讲,就是在堆上分配,对象主要分配在新生代的。

2301_78064339的博客 474

Java高级——内存分配机制

对象都是在堆上分配,但实际上也有可能经过即时编译后被拆散为标量类型并间接地在栈上分配分代设计下,新生对象通常会分配在新生代中,少数情况下(例如对象大小超过一定阈值)也可能会直接分配在老年代《Java虚拟机规范》并未规定新对象的创建存储细节,取决于垃圾收集器及参数的设定以下如无特别说明,均使用HotSpot虚拟机的Serial+Serial Old,JDK8环境。

松仔Log的博客 1688

图文深入理解java内存分配

本篇图文深入讨论java内存分配。当然,这里所说的深入,并不是指长篇大论,而是就事论事重点深入介绍java内存分配原理机制。

qq_45732829的博客 3276

[java]内存的分配策略

来源牛课网 整理 补充Java内存管理知识: 1. 内存分配策略 按照编译原理的观点,程序运行时的内存分配有三种策略,分别是静态的,栈式的,堆式的。 静态存储分配是指在编译时就能确定每个数据目标在运行时刻的存储空间需求,因而在编译时就可以给他们分配固定的内存空间。这种分配策略要求程序代码中不允许有可变数据结构(比如可变数组)的存在,也不允许有嵌套或者递归的结构出现,因为它们都会导致编译程序无法计...

890

Java内存分配策略有哪些_深入理解Java虚拟机——JVM内存结构内存分配策略...

一、JVM内存模型Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。这些区域都有各自的用途,以及创建销毁的时间,有的区域随着虚拟机进程的启动而存在,有些区域则依赖用户线程的启动结束而建立销毁。根据《Java虚拟机规范(JavaSE 7版)》的规定,Java虚拟机所管理的内存将会包括以下几个运行时数据区域:1、程序计数器程序计数器(Program Count...

weixin_29169899的博客 140

JVM结构、GC工作机制详解

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33811539的博客 62

JVM结构内存分配、垃圾回收算法、垃圾收集器

文章主要分为以下四个部分 JVM结构内存分配、垃圾回收算法、垃圾收集器。下面我们一一来看。 一、JVM结构 根据《java虚拟机规范》规定,JVM的基本结构一般如下图所示: 从左图可知,JVM主要包括四个部分: 1.类加载器(ClassLoader):在JVM启动时或者在类运行时将需要的class加载到JVM中。(右图表示了从java源文件到JVM的整个过程,可配合

syney120的专栏 731

JVM核心原理:深入解析S0与性能优化

💡亲爱的技术伙伴们:你是否正被这些问题困扰——我打磨的《 Java高级开发岗面试急救包》正式上线!🎯 特别适合:课程链接:https://edu.csdn.net/course/detail/40731课程介绍如下:在深入探讨JVMJava虚拟机)的核心知识点之前,让我们先回顾一下JVM的发展历程。想象一下,一个没有JVMJava世界,那将是一个怎样的场景?在Java编程语言诞生之前,编程语言与操作系统之间的紧密耦合导致了代码的可移植性极低。为了打破这种限制,Sun Microsystems公司推出

我是Java程序员廖志伟,感谢朋友们的支持!不定期贡献一篇高品质、过万文字、图文并茂且附有视频解说、满载代码示例注释的良心之作,坚决杜绝粗制乱造。 578

个人笔记,深入理解 JVM,很全!

欢迎关注方志朋的博客,回复”666“获面试宝典01、前言刷豆瓣看到《深入理解 JVM》出第三版了,遂买之更新 JVM 知识,本文为笔记,仅供个人 Review02、Java 内存区域与内存...

方志朋的博客 164

JVM笔记汇总

JVM笔记汇总

小锴的学习笔记 259

跟着腾讯T4学架构:微服务+MySQL+Nginx+Redis+容器化+虚拟机

深入理解Java虚拟机》 但要想真的深入理解虚拟机一问肯定远远不够的,但是本文中分三部分对JVM有深入的解析。 第1章 走近Java 第2章 Java内存区域与内存溢出异常 第3章 垃圾收集器与内存分配策略 第4章 虚拟机性能监控与故障处理工具 第5章 调优案例分析与实战 第6章 类文件结构 第7章 虚拟机类加载机制 第8章 虚拟机字节码执行引擎 第9章 类加载及执行子系统的案例与实战 第10章 早期(编译期)优化 第11章 晚期(运行期)优化 第12章 Java内存模型与线程

文章中资料均可获取,有需要请添加yunduoa2019即可 203

深入理解Java虚拟机》导读

​ 简介: ​ 介绍初学者如何快速学习阅读《深入理解Java虚拟机》书籍。 书籍PDF:深入理解Java虚拟机:(第3版).pdf · UITC/save-paper - Gitee.com.pdf)

yzy_cb的博客 511

Xilinx FPGA平台DDR3设计保姆式教程(3)MIG IP核使用教程及DDR读写时序

干货来了,用DDR搬砖,只需要会用IP就好,Xilinx官方YYDS! ----------------------------------------------------------------------------------------------------------------- 汇总篇: Xilinx平台DDR3设计保姆式教程(汇总篇)——看这一篇就够了 ----------------------------------------------------------...

数字IC/FPGA杂货铺,找一找,或许有你想要的~ 2万+

通用网站后台密码猜解工具

通用网站后台密码猜解工具,通用网站后台密码猜解工具,通用网站后台密码猜解工具

上一篇: 深入理解Java虚拟机——JVM垃圾回收机制和垃圾收集器详解
下一篇: 深入理解Java虚拟机——JVM、DVM(dalvik)和ART之间的区别
简简单单_zz
博客等级 码龄10年 118粉丝 63原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值