Java虚拟机内部组成

1、栈区

public class Math {public int compute(){//一个方法对应一块栈帧内存区域int a = l;int b = 2;int c = (a + b)*10;return c;
}
public static void main(String[] args){Math math = new, Math() ;math.compute() ;System.out.println("test");}}

栈是先进后出的,main方法运行会先分配一块main方法栈帧内存空间,main方法调用compute()方法,又会给分配一块compute()栈帧内存空间,里面存放着abc局部变量,当方法一结束,局部变量就会被销毁,释放空间出栈,再继续回到main主方法执行

  • 一个方法开始运行 栈会给它分配一块栈帧内存区域(入栈)
  • 一个方法对应一个栈帧
  • 运行结束后会把这块内存销毁(出栈)

一个栈帧中有局部变量,操作数栈,动态连接,方法出口

操作数栈:程序在运行过程中操作数(加减乘除)临时存在的一块数据内存

动态链接:把符号引用(方法名称跟括号)转变为直接引用(方法区中的实际地址)

方法出口:存储返回的信息,比如根据存储的返回信息,从compute()执行结束返回到nain方法执行System.out.println("test"),知道返回到main方法中的哪一行代码继续去执行

2、程序计数器

每一个线程在运行时,java程序计数器会给这个线程分配一块程序计数器内存 来存放当前线程正在或马上要运行的那行代码的位置或行号--->代码在方法区内部的(内存地址))程序计数器的值会随着代码的运行被字节码执行引擎修改

为什么要设计程序计数器呢?

Java程序是多线程运行的,比如当我们执行线程A的11行代码,突然出现优先级更高的线程B,那么线程A会被挂起,线程B执行结束后继续执行线程A,那么从哪里开始继续运行呢?就从程序计数器中读取到11,继续执行线程A 的11行代码

3、方法区和本地方法栈

方法区在jdk1.8之前叫永久代,jdk1.8之后叫元空间。方法区(元空间):存放常量 、静态变量、 类信息(class字节码文件也叫内元信息)

本地方法栈:本地方法调用时,本地方法栈会给当前线程分配一块栈内存来运行本地方法 (被 native修饰的方法为本地方法

4、堆

堆主要用于存放各种类的实例对象和数组。在java中被分为两个区域:年轻代和老年代。在java中还有一个永久代的意思,这里最后会单独说明。

默认老年代占整个堆的2/3,年轻代占1/3,新生代又细分为三个区:Eden区、SurvivorFrom、ServivorTo区,三个区的默认比例为:8:1:1。

Eden区:Java新创建的对象绝大部分会分配在Eden区(如果对象太大,则直接分配到老年代)。当Eden区内存不够的时候,就会触发MinorGC(新生代采用的是标记--复制算法),对新生代进行一次垃圾回收。

SurvivorFrom区和To区:在GC开始的时候,对象只会存在于Eden区和名为From的Survivor区,To区是空的,一次MinorGc过后,Eden区和SurvivorFrom区存活的对象会移动到SurvivorTo区中,然后会清空Eden区和SurvivorFrom区,并对存活的对象的年龄+1如果对象的年龄达到15,则直接分配到老年代。MinorGC完成后,SurvivorFrom区和SurvivorTo区的功能进行互换。下一次MinorGC时,会把SurvivorTo区和Eden区存活的对象放入SurvivorFrom区中,并计算对象存活的年龄。

概念:

  • 新生代 GC(Minor GC)——从年轻代空间(包括 Eden 和 Survivor 区域)回收内存被称为 Minor GC,因为 Java 对象大多都具备朝生夕灭的特性,所以 Minor GC 非常频繁,一般回收速度也比较快。
  • 老年代 GC(Major GC / Full GC)——指发生在老年代的 GC,出现了 Major GC,经常会伴随至少一次的 Minor GC(但非绝对的,ParallelScavenge 收集器的收集策略里就有直接进行 Major GC 的策略选择过程,HotSpot虚拟机里面关注吞吐量的Parallel Scavenge收集器是基于标记-整理算法的,而关注延迟的CMS收集器则是基于标记-清除算法的

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/61283.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

怎么用postman连接websocket

点击右侧栏的Collections,然后点击旁边的New,然后点击其中的WebSocket Request,然后输入Url,点击Connection,这里需要注意的是Url不能加上http://,因为这个不是http协议。

Springboot 接口方式硬通知实现 动态刷新配置值,@ConfigurationProperties 、@Value 都可以

前言 看到这个文章标题,也许有的看官就觉得很多余, 因为Nacos 可以设置 NacosValue(value "${XXX}",autoRefreshed true) 实现动态刷新; 又因为cloud config的RefreshScope 实现动态刷新; 还有阿波罗...等 这…

LA@齐次线性方程组解的结构

文章目录 齐次线性方程组解的结构🎈解的性质齐次线性方程组的解的线性组合还是方程组的解基础解系通解 定理:齐次线性方程组基础解系存在定理齐次线性方程组的基础解系包含的向量个数(秩)👺应用和示例推论1推论2推论3:转置矩阵对的乘积秩的性质非自由未知…

进程Start

Linux中的命令解释器和Windows的程序管理器explorer.exe一样地位,都是在用户态下运行的进程 共享变量发生不同进程间的指令交错,就可能会数据出错 进程只作为除CPU之外系统资源的分配单位 CPU的分配单位是线程 每个进程都有自己的独立用户空间 内核空间是OS内核的…

docker-compose管理创建LNMP服务并运行Wordpress网站平台

文章目录 一.项目环境1. 环境描述2.项目需求 二.部署过程1.安装Docker2.安装Docker加速器3.Docker-Compose安装部署4.准备依赖文件、配置nginx5.配置mysql6.配置php7.编写docker-compose.yml8.验证 三.容器快照,然后将Docker镜像打包成tar包备…

springmvc没有绿标,怎么配置tomcat插件运行?

一、添加插件后,刷新,自动从maven仓库下载tomcat插件 二、写好项目后,添加tomcat配置 三、即可点击绿标运行

关于layui table回显以及选择下一页时记住上一页数据的问题

代码如下 <div class"layui-form-item"><label class"layui-form-label">选择商品</label><div class"layui-input-inline"><input type"text" name"keyword" id"keyword" placehold…

【广州华锐互动】AR昆虫认知学习系统实现对昆虫形态的捕捉和还原

随着科技的不断发展&#xff0c;人们对自然界的认识也在不断加深。在这个过程中&#xff0c;AR&#xff08;增强现实&#xff09;技术的出现为人们带来了全新的体验方式。为此&#xff0c;广州华锐互动开发了AR昆虫认知学习系统&#xff0c;本文将为大家详细介绍这款系统的特点…

jvm的内存划分区域

jvm划分5个区域&#xff1a; java虚拟机栈、本地方法栈、堆、程序计数器、方法区。 各个区各自的作用&#xff1a; 1.本地方法栈&#xff1a;用于管理本地方法的调用&#xff0c;里面并没有我们写的代码逻辑&#xff0c;其由native修饰&#xff0c;由 C 语言实现。 2.程序计数…

HTML基础--Form表单--内联元素

目录 Form表单 表单元素 创建表单 () 文本输入 () 密码输入 单选按钮 () 和 复选框 () 下拉列表 () 和 选项 ()提交按钮 () 重置按钮 () 块元素与行内元素&#xff08;内联元素&#xff09; Form表单 HTML中的表单&#xff08;<form>&#xff09;是一个重要的元…

Kubernetes技术-Kubernetes集群环境搭建准备

1.搭建环境规划 在搭建k8s的时候可以分为两种: 单master集群,故名思意,只有一个master管理节点和多个node节点。如下图所示: 多master集群,故名思意,有多个master管理节点和多个node节点。如下图所示: 2.服务器硬件要求 (1).测试环境要求(教学、研究等环境) Master节点:至…

数字转中文大写金额

有时候&#xff0c;我们需要显示中文大写金额&#xff0c;比如打印银行付款申请单等。 新建一个工程&#xff0c;加入一个标准模块在模块中加入如下代码&#xff0c;窗口中调用 AmountInChineseWords 函数即可。最大解析到百万亿&#xff0c;小数最多解析两位到分。 模块代码…

使用生成式 AI 和 ML 模型进行电子邮件和移动主题行优化

结合使用生成式 AI 和 ML 模型,根据语气和受众自动创建引人注目的主题行和标题,以实现最大程度的参与。 电子邮件和推送通知的主题行和标题在确定参与率方面发挥着重要作用。数字通信需要精心设计引人注目的主题行和简洁的推送通知标题来吸引用户的注意力。营销人员根据要传递…

[蓝桥复盘] 算法赛内测赛2 20230831

[蓝桥复盘] 算法赛内测赛2 20230831 总结新一与基德的身高大战1. 题目描述2. 思路分析3. 代码实现 肖恩的投球游戏加强版1. 题目描述2. 思路分析3. 代码实现 体育健将1. 题目描述2. 思路分析3. 代码实现 小桥的奇异旋律1. 题目描述2. 思路分析3. 代码实现 区间or划分1. 题目描…

css让多个盒子强制自动等宽

1.width: calc( 100 / n% ) 2.display:flex; flex:1;width:100px; 3.display:grid;grid-template-columns: repeat(auto-fit, minmax(100px, 1fr)); 但是其中某一个内容较长的时候 会破坏1:1:1的平衡 这个时候发现附件名字过长导致不等比例&#xff0c;通过查看阮一峰flex文…

安防视频监控/视频集中存储/云存储平台EasyCVR平台无法取消共享通道该如何解决?

视频汇聚/视频云存储/集中存储/视频监控管理平台EasyCVR能在复杂的网络环境中&#xff0c;将分散的各类视频资源进行统一汇聚、整合、集中管理&#xff0c;实现视频资源的鉴权管理、按需调阅、全网分发、云存储、智能分析等&#xff0c;视频智能分析平台EasyCVR融合性强、开放度…

智慧景区方案:AI与视频融合技术如何助力景区监管智能化升级?

随着经济的发展&#xff0c;人们对生活的需求也不再局限于温饱层面&#xff0c;越来越多的人们开始追求文化、艺术的高层次需求&#xff0c;旅游也逐渐成为人们日常放松的一种方式。由于我国人口多、易扎堆等特点&#xff0c;景区的运营监管方式也亟需改革。TSINGSEE青犀智能分…

ssm计算机网络课程试卷生成器系统源码

ssm计算机网络课程试卷生成器系统源码099 开发工具&#xff1a;idea 数据库mysql5.7 数据库链接工具&#xff1a;navcat,小海豚等 技术&#xff1a;ssm package com.controller;import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Arrays;…

OPENCV实现SURF特征检测

1、SURF优点:SIFT速度慢,一次出现了SURF;2、使用SURF步骤:surf = cv2.xfeatures2d.SURF_create()kp,des = surf.detectAndComputer(img,mask)# -*- coding:utf-8 -*- """ 作者:794919561 日期:2023/8/31 """# -*-

Linux脚本- 执行当前文件下前500个.c文件,并将每个文件对应的执行结果重定向到同名的.ok文件中

需求&#xff1a;执行当前文件下前500个.c文件&#xff0c;并将每个文件对应的执行结果重定向到同名的.ok文件中 以下是一个用于实现该功能的 Bash 脚本。 #!/bin/bash# 计数器&#xff0c;用于限制处理的文件数量 counter0# 遍历当前目录下的所有 .c 文件 for c_file in *.c…