当前位置: 首页 > news >正文

JVM-基础知识

JVM-基础知识

什么是JVM

  1. JVM是一种跨语言的平台,任何语言只要能编译成.class文件都可以被JVM运行。
  2. JVM只和.class文件有关系,和Java语言没关系。
  3. JVM是一种虚拟机规范。

java文件是如何交给JVM执行的

请添加图片描述

JVM的常见实现

  1. HostStop:Oracle官方
  2. 另外还有IBM的J9、Microsoft VM、TaoBaoVM、azul zing(收费)。

堆、栈

  1. 栈和堆是内存中的进程的结构
  2. 一个线程一个栈,这个线程中的每个方法是一个栈贞
  3. 栈中存储的是堆中内存的地址
  4. 栈内存空间在方法弹栈后自动消失,而堆内存空间需要手动管理,这就导致栈贞弹出时候,但是其指向堆中的内存空间是无法被释放

栈帧

每个方法对应一个栈帧, 其中包括:

  1. Local Variable Table:局部变量表。存储方法中的局部变量,包括形参
  2. Operand Stack:操作数堆栈
  3. Dynamic Linking:指向性JVM运行时常量池
  4. return address: 方法返回值地址

栈上分配和线程本地分配(TLAB)

触发的情况
  1. 线程私有且小对象
  2. 无逃逸,即方法内部的变量,无方法外部引用
  3. 标量替换,即可以用少了的基本数据类型、引用类型等可以代替整个对象
线程本地分配(TLAB)

全称ThreadLocal Allocation Buffer,在edne区大约占用1%的内存归线程独有空间,多线程下不必争抢堆内存空间,提高效率。

JVM运行时数据区(RunTimeDateArea)

包括以下几部分:

  1. PC-程序计数器:存放指令的位置,cup执行就是不停的在PC中取指令执行,直到指令被执行完,每个线程一个。
  2. JVM stacks-JVM的栈:存放栈帧,每个线程一个
  3. native method stacks-本机方法栈: C/C++中的栈,本地方法栈,每个线程一个
  4. heap-堆:线程共享
  5. method area-方法区: 包括JVM运行时常量池,线程共享
  6. DirectMemory-直接内存区:直接内存区,JDK1.4后新增,可直接访问内核空间内存,NIO实现零拷贝

JVM内存关系

  1. 堆内存:分为年轻代,老年代
  2. 非堆内存:只包含永久代,即方法区的实现,存储的是程序运行时长期存活的对象,比如类的元数据、方法、常量、属性等。
  3. 1.8之前方法区的实现为PermGen,jdk1.8开始方法区的实现为MetaSpace。
  4. 在jdk1.8废弃了永久代,使用元空间(MetaSpace)取而代之,元空间存储的对象与永久代相同,区别是:元空间并不在jvm中,使用的是本地内存。
  5. 在jdk1.8,字符串常量池已经从永久代移动到了堆中

相关文章:

JVM-基础知识

JVM-基础知识 什么是JVM JVM是一种跨语言的平台,任何语言只要能编译成.class文件都可以被JVM运行。JVM只和.class文件有关系,和Java语言没关系。JVM是一种虚拟机规范。 java文件是如何交给JVM执行的 JVM的常见实现 HostStop:Oracle官方另外还有IBM的J9、…...

保密工作应党而生、伴党而行、为党而兴

1.(C )工作应党而生、伴党而行、为党而兴,始终是党和国家的一项重要工作。 A. 农业 B. 国防 C. 保密 D. 文化 2.机关、单位对所产生的国家秘密事项,应当按照国家秘密及其密级的具体范围的规定确定密级,同时确定&#x…...

docker login 报错: http: server gave HTTP response to HTTPS client

环境: 自建 Harbor、Docker 1. 问题分析 # 命令,这里用的是 IP,可以为域名 docker login -u test 172.16.51.182:31120 # 输入密码 Password:# 报错如下: Error response from daemon: Get "https://172.16.51.182:31120/…...

「C系列」C 文件读写

文章目录 一、C 文件读写1. 打开文件2. 写入文件3. 读取文件4. 关闭文件5. 文件读写模式6. 错误处理 二、常见问题1. 文件打开失败2. 文件读写错误3. 文件读写位置4. 缓冲区刷新 三、相关链接 一、C 文件读写 在C语言中,文件读写是通过一系列的标准库函数来完成的&…...

编程中的cos:深度解析与应用探索

编程中的cos:深度解析与应用探索 在编程的广阔天地中,cos这一数学概念扮演着举足轻重的角色。它不仅是数学函数库中的基础元素,更是图形渲染、科学计算以及数据处理等多个领域的核心工具。本文将从四个方面、五个方面、六个方面和七个方面&a…...

计算机毕业设计hadoop+spark+hive知识图谱酒店推荐系统 酒店数据分析可视化大屏 酒店爬虫 高德地图API 酒店预测系统 大数据毕业设计

流程: 1.Python爬取去哪儿网全站旅游数据约10万,存入mysql; 2.使用pandasnumpy/hadoopmapreduce对mysql中旅游数据进行数据清洗,使用高德API计算地理信息,最终转为.csv文件上传hdfs; 3.hive建库建表导入.csv文件作为数据集&#x…...

简单谈谈云服务器私网IP的存在意义及优势

云服务器是基于虚拟化技术的计算资源,可以在云平台上灵活创建和管理。为了满足不同用户的需求,云服务提供商在云服务器上分配了两种类型的IP地址:公网IP和私网IP。其中,私网IP是指在局域网内使用的内部IP地址,无法通过…...

python错题(2)

、...

禁止methtype联网

mathtype断网_如何禁止mathtype联网-CSDN博客https://blog.csdn.net/qq_41060221/article/details/128144783...

【iOS】UI学习——cell的复用及自定义cell

目录 前言cell的复用手动(非注册)自动(注册) 自定义cell总结 前言 Cell复用和自定义Cell是在开发iOS应用时常见的一种优化技巧和定制需求。   Cell复用是UITableView或UICollectionView的一个重要优化机制。当用户滚动这些视图时…...

【详细介绍下PostgreSQL】

🌈个人主页: 程序员不想敲代码啊 🏆CSDN优质创作者,CSDN实力新星,CSDN博客专家 👍点赞⭐评论⭐收藏 🤝希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共…...

基于Matlab停车场车牌识别计时计费管理系统 【W2】

简介 停车场车牌识别计时计费管理系统在现代城市管理中具有重要意义。随着城市化进程的加快和车辆数量的增加,传统的人工管理停车场的方式已经难以满足效率和精确度的要求。因此引入车牌识别技术的自动化管理系统成为一种趋势和解决方案。 背景意义 提升管理效率&a…...

码住!详解时序数据库不同分类与性能对比

加速发展中的时序数据库,基于不同架构,最流行的类别是? 作为管理工业场景时序数据的新兴数据库品类,时序数据库凭借着对海量时序数据的高效存储、高可扩展性、时序分析计算等特性,一跃成为物联网时代工业领域颇受欢迎的…...

【C/C++】实参与形参的区别

在编程中,形参(形式参数)和实参(实际参数)是函数调用中的两个基本概念,它们在函数定义和函数调用中扮演着不同的角色。 形参(Formal Parameters): 形参是在函数定义时声明…...

---异常---

我们在运行程序时总遇到各种与报错,数组越界,空指针的引用,这些在java中都称为异常 对于不同的错误都具有一个与他对应的异常类来秒描述 这是对于数组越界这个类里有的方法,这些是描述异常的 在java中有一个完整的描述异常的类的…...

python如何终止程序运行

方法1:采用sys.exit(0),正常终止程序,从图中可以看到,程序终止后shell运行不受影响。 方法2:采用os._exit(0)关闭整个shell,从图中看到,调用sys._exit(0)后整个shell都重启了(RESTAR…...

网络:用2个IP地址描述一个连接

用2个IP地址描述一个连接。这是在阅读了《TCP/IP指南》后的感想,与工业标准不同,需注意区分。 如果一个IP地址有48位,则用96位描述一个连接 对于单播,是每个IP分别描述位置。位置包括:邮局编号主机编号,采用…...

Nodejs--构建web应用

构建web应用 将从http模块中的服务器端中的request使劲按开始分析,request时间发生于网络连接建立,客户端想服务器发送报文,服务器解析报文,发现http请求的报文的时候,在出发request事件之前,已经准备好Se…...

C++ 二分查找法【面试】

在C中实现二分查找法是一个常见的面试问题。二分查找法是一种在有序数组中查找特定元素的算法&#xff0c;其时间复杂度为O(log n)。以下是使用C实现二分查找的示例代码&#xff1a; #include <iostream> #include <vector>// 二分查找法函数 int binarySearch(co…...

【Docker】docker-compose常用的构建docker容器的yml文件

docker-compose的简单使用方法&#xff0c;在准备好的文件夹中&#xff0c;mkdir好要挂载的如data或者conf文件夹&#xff0c;及vim docker-compose.yml&#xff0c;将下方的要使用的内容粘贴进去&#xff0c;根据自己需要添加/删除/修改一下。最后在当前文件夹直接后台启动即可…...

GluonCV版本升级指南:从0.8到0.11的10大新特性详解

GluonCV版本升级指南&#xff1a;从0.8到0.11的10大新特性详解 【免费下载链接】gluon-cv dmlc/gluon-cv: GluonCV 是由DMLC&#xff08;Apache MXNet背后的社区&#xff09;开发的一个计算机视觉库&#xff0c;为研究人员和工程师提供了大量预训练模型、基准测试和工具&#x…...

Java MVC框架终极对决:Blade vs Spring Boot的完整对比指南

Java MVC框架终极对决&#xff1a;Blade vs Spring Boot的完整对比指南 【免费下载链接】blade :rocket: Lightning fast and elegant mvc framework for Java8 项目地址: https://gitcode.com/gh_mirrors/bl/blade 在Java Web开发领域&#xff0c;选择正确的MVC框架对项…...

Windows系统焕新优化:Win11Debloat全方位性能提升指南

Windows系统焕新优化&#xff1a;Win11Debloat全方位性能提升指南 【免费下载链接】Win11Debloat 一个简单的PowerShell脚本&#xff0c;用于从Windows中移除预装的无用软件&#xff0c;禁用遥测&#xff0c;从Windows搜索中移除Bing&#xff0c;以及执行各种其他更改以简化和改…...

小米Pad 5变身Windows生产力工具:完整驱动配置实战指南

小米Pad 5变身Windows生产力工具&#xff1a;完整驱动配置实战指南 【免费下载链接】MiPad5-Drivers Based on Surface Duo Drivers. 项目地址: https://gitcode.com/gh_mirrors/mi/MiPad5-Drivers 你是否想过将手中的小米Pad 5从娱乐平板转变为真正的生产力工具&#x…...

手把手教你用Python实现双足机器人ZMP预观控制(附开源代码)

用Python实现双足机器人ZMP预观控制的完整指南 1. ZMP理论基础与机器人动力学模型 零力矩点(ZMP)理论是现代双足机器人步态规划的核心概念&#xff0c;它定义了地面反作用力合力作用点的位置。当ZMP位于支撑多边形(由机器人足底接触点构成的凸多边形)内时&#xff0c;机器人能保…...

AI头像生成器镜像免配置:支持ARM架构(Mac M2/M3)的Qwen3-32B适配版

AI头像生成器镜像免配置&#xff1a;支持ARM架构&#xff08;Mac M2/M3&#xff09;的Qwen3-32B适配版 想给自己换个酷炫的头像&#xff0c;但苦于没有设计灵感&#xff1f;或者有了想法&#xff0c;却不知道怎么把它变成AI绘图工具能听懂的“语言”&#xff1f;别急&#xff…...

别再手动敲代码了!用通义千问+PHPStudy,30分钟搞定一个带数据库的登录注册系统

零基础30分钟构建登录系统&#xff1a;AIPHPStudy极速开发指南 上周帮学妹调试课程设计时&#xff0c;我发现90%的初学者都在重复造轮子——手动编写那些千篇一律的表单验证和数据库连接代码。其实借助现代开发工具链&#xff0c;完全可以在喝杯咖啡的时间里搭建出完整的登录注…...

滴滴盖亚计划ETA数据集实战:如何用Python处理智能交通数据(附完整代码)

滴滴盖亚ETA数据集实战&#xff1a;Python智能交通数据处理全流程解析 引言&#xff1a;智能交通时代的ETA技术价值 在早高峰的深圳深南大道上&#xff0c;网约车司机王师傅刚接单就面临抉择&#xff1a;系统推荐的三条路线中&#xff0c;哪一条能最快到达乘客上车点&#xf…...

如何用TrollInstallerX在iOS 14-16设备上安装TrollStore

如何用TrollInstallerX在iOS 14-16设备上安装TrollStore 【免费下载链接】TrollInstallerX A TrollStore installer for iOS 14.0 - 16.6.1 项目地址: https://gitcode.com/gh_mirrors/tr/TrollInstallerX TrollInstallerX是一款专为iOS 14.0-16.6.1系统设计的TrollStor…...

黑马点评毕业设计效率提升实战:从单体到高并发架构的演进路径

最近在帮学弟学妹们review“黑马点评”这个经典的毕业设计项目时&#xff0c;发现一个普遍现象&#xff1a;大家都能把功能跑起来&#xff0c;但一提到性能优化、高并发&#xff0c;就有点无从下手。很多同学直接沿用课程里的单体架构模板&#xff0c;结果在模拟答辩或者自己压…...