首页 > 其他分享 >深入理解JVM学习笔记

深入理解JVM学习笔记

时间:2023-02-25 17:55:41浏览次数:48  
标签:Java 虚拟机 笔记 深入 内存 JVM 指针 空闲 加载

Java虚拟机内存区域:

[2.2]运行时数据区域:

1.程序计数器

2.Java虚拟机栈

3.本地方法栈

4.Java堆

5.方法区

6.运行时常量池

7.直接内存

[2.3.1]对象的创建

  在虚拟机中,当程序遇到一条new指令时,首先检查这个指令的参数能否在常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否已被加载、解析和初始化过。如果没有,必须先执行相应的类加载过程。类加载检查通过后,虚拟机为新生对象分配内存。对象所需内存的大小在类加载完成后便可完全确定,若Java堆中内存是绝对规整的(即所有用过的内存都放在一边,空闲的内存放在另一边,中间放着一个指针作为分界点的指示器),那所分配内存就仅仅是把那个指针向空闲空间那边挪动一段与对象大小相等的距离,即“指针碰撞”。若不是规整的,则采用“空闲列表”的分配方式。Java堆是否规整由所采用的垃圾收集器是否带有压缩功能决定。使用带Compact过程的收集器时,采用指针碰撞,而使用CMS这种基于Mark-Sweep算法的收集器时,通常采用空闲列表。

标签:Java,虚拟机,笔记,深入,内存,JVM,指针,空闲,加载
From: https://www.cnblogs.com/zzzzzzx/p/17154906.html

相关文章

  • C#初步学习1(个人笔记,基于老赵.Net的视频自学,不喜勿喷)
    //此笔记仅针对个人学习而写,会有所缺失的内容,不喜勿喷初步学习创建文件这里使用VisualStudio编写C#代码安装其中一个运行平台,创建新项目至于名字那就起每一个码农的......
  • 后缀数组做题笔记
    后缀数组笔记这里挂一个学弟学习笔记的链接:Link,大部分内容都学习自这里。按道理这篇文章会持续更新1.Preface​ 首先有几个概念需要明确。本文中所有字符串下标从\(1......
  • 【学习笔记】SpringMVC执行原理
    SpringMVC执行原理执行步骤每一步的解释如下:DispatcherServlet表示前端控制器,是整个SpringMVC的控制中心,用户发出请求,DispatcherServlet接受请求并拦截请求请求的......
  • OpenCvSharp 学习笔记1 -- 基本对象和常见操作
    一:Mat对象的创建OpenCvSharp版本:v4.0.30319mat对象继承了IDisposable接口,可以直接用using语句。mat对象的构造函数有十几个之多,我这里之列举常用的几个。Mat在C......
  • Codeforces Edu 143 补题笔记
    [A.TwoTowers](Problem-A-Codeforces)Def给出长为n,m的两个01栈,可以将栈顶的元素移往另一个栈顶,问是否可以使得两个栈中元素均为01交替Sol因为是栈顶,可以知道......
  • python笔记--在文件进行输出
    将print的内容输出到文件中1#将数据输出到文件中2fp=open('E:/text1.txt','a+')3print('helloword',file=fp)4fp.close()  1#不进行换行输出(在一行输出......
  • 一道题为例深入理解二分
    深刻理解二分最佳牛围栏农夫约翰的农场由$N$块田地组成,每块地里都有一定数量的牛,其数量不会少于$1$头,也不会超过$2000$头。约翰希望用围栏将一部分连续的田......
  • Redis笔记总结之redis介绍
    摘自:https://www.cnblogs.com/demoKing/p/8573873.html一、Redis介绍:redis的发展历史简单的理解为因为使用类似MySql这类关系型数据库不方便进而开发的开......
  • Java学习笔记----注解
    三个基本的注解@Override:限定重写父类方法,该注解只能用于方法@Deprecated:用于表示所修饰的元素(类,方法等)已过时@SuppressWarning:抑制编译器警告自定义注解public@i......
  • Python学习笔记(五)if分支语句
    一、if语法示例:1money=int(input('请输入余额:'))2ifmoney>=5:3print('买得起!')45ifTrue:6print('条件成立时要执行的代码1')7print('条......