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

涨薪技术|0到1学会性能测试第56课- 堆与栈、GC回收机制

前面的推文我们掌握了Tomcat调优技术。今天给大家分享JVM调优技术。后续文章都会系统分享干货,带大家从0到1学会性能测试。

图片

01堆与栈

在上一章节介绍JVM内存模型时,发现JVM内存分为堆和栈两种,那么为什么需要将内存分为堆和栈两种呢?之所以分成两类是为了JVM在调用内存时更好的对内存进行管理。

在JAVA虚拟机中使用的数据又分为两类:

一是基础数据;

二是引用数据;

基础数据是引用数据本身,引用数据是引用数据对象。基础数据通常包括:byte、short、int、long、char、float、double、Boolean、returnAddres。引用类型包括:接口、类、数组。

栈是运行单位,所以的运行对象,都在是栈中,当程序运行时JVM会为每个线程一个栈大小。每个线程栈是不通用的,因为每个任务都有一个独立的线程来执行。堆是存储单位,所以有需要使用的数据都在堆中,堆是可以共享的。也就是堆是处理的数据的地方,栈是用来处理的逻辑的地方。之所以分堆与栈,这样的好处是可以将业务逻辑与数据进行分离,同时也可以提高数据的共享程度。

从软件设计的角度来看,栈代表了处理逻辑,而堆代表了数据,这样将数据与逻辑分离可以让处理逻辑更为清晰。这种隔离、模块化的思想在软件设计的方方面面都有体现。

堆与栈的分离,使得堆中的内容可以被多个栈共享,但栈不管理 Java栈还是方法栈其线程

http://www.xdnf.cn/news/4861.html

相关文章:

  • 如何使用测试软件 Jmeter
  • 检查当前 Docker 使用的 默认运行时(default runtime)方法
  • mysql主从同步
  • Docker组件详解:核心技术与架构分析
  • 三维底座+智能应用,重构城市治理未来
  • WorkManager与Kotlin后台任务调度指南
  • 牛客练习赛138-题解
  • leetcode 383. Ransom Note
  • 开源AI对比--dify、n8n
  • 记录一下学习kafka的使用以及思路
  • Windows远程访问Ubuntu的方法
  • zst-2001 历年真题 设计模式
  • 多视图密集对应学习:细粒度3D分割的自监督革命
  • 使用PyTorch训练马里奥强化学习代理的完整指南
  • 系统思考:短期困境与长期收益
  • Webpack基本用法学习总结
  • Vue3 + Typescript 基础进阶与实战完全指南
  • SQL进阶:如何把字段中的键值对转为JSON格式?
  • python调用国税乐企直连接口开数电票之额度管理
  • transformer 笔记 tokenizer moe
  • 科技创业园共享会议室线上预约及智能密码锁系统搭建指南
  • FPGA实战项目2———多协议通信控制器
  • 学习黑客认识数字取证与事件响应(DFIR)
  • 安科瑞ADL3000-E-A/KC三相交流电能表CE认证导轨表
  • Spring AI 系列——使用大模型对文本内容分类归纳并标签化输出
  • React 中 useMemo 和 useEffect 的区别(计算与监听方面)
  • 传统销售VS智能销售:AI如何重构商业变现逻辑
  • Microsoft 365 Copilot:为Teams在线会议带来多语言语音交流新体验
  • 【计算机网络-传输层】传输层协议-TCP核心机制与可靠性保障
  • Ubuntu通过源码编译方式单独安装python3.12