2-23 switch、JVM内存模型、垃圾回收机制、this、static、变量的分类
文章目录
- switch 实现成绩评级
- JVM内存模型概念
- 栈的特点
- 堆的特点
- 垃圾回收机制
- 通用的分代垃圾回收机制
- 三种清理算法
- 垃圾回收过程
- 垃圾回收常见的两种检测引用算法
- 内存泄露常见原因
- this的用法
- 创建对象的四步
- static 静态
- 特点
- 变量的分类和作用域
- import
switch 实现成绩评级

switch的特性每次只能比较一个整数,难道要一个一个处理么?
可以使用求余,反正成绩个位数不影响评级
switch ((int)grade/10){case 10:case 9:System.out.println("优秀");break;case 8:System.out.println("良好");break;case 7:System.out.println("中等");break;case 6:System.out.println("及格");break;default:System.out.println("不及格");
}
JVM内存模型概念
栈的特点
- 每一个线程都会对应一个栈,但是所有线程共享一个堆和方法区
- 栈描述的是方法执行的内存模型,每个方法被调用都会创建一个栈帧
- 栈属于线程私有,无法实现线程间的共享
- 栈由系统自动分配,速度快、内存空间连续
堆的特点
- 堆用于存储创建好的对象和数组(数组也是对象)
- JVM只有一个堆,被所有线程共享
- 堆存储空间不连续,灵活但速度慢
- 堆被所有线程所共享,在堆上的区域会被垃圾回收期做进一步划分
垃圾回收机制
- 内存管理很大程度上是指堆中对象的管理
- 垃圾回收机制回收的是没有任何变量引用的对象,有引用的对象即使长时间没有调用也不会回收
通用的分代垃圾回收机制

- 年轻代——存放刚刚new过的对象
- 年老代——Eden满以后会触发一次Minor GC 清理无用对象,将有用对象复制到年老代,年老代中的存储对象会不停循环,转移区块存储,当循环次数超过15次时会转移到年老代进行存储
- 永久代——Java8后换了名字,但是他的功能是一直都有的
分代垃圾回收,是基于这样一个事实,不同对象的生命周期不同
Full GC用于清理年老代,年轻代。JVM调优中,很大的工作就是Full GC的调节
Minor GC清理年轻代 ,Major GC清理年老代
程序员无权调用垃圾回收器,即使程序员显示调用,也只是申请,不是一定执行(System.gc())
三种清理算法
- Minor GC清理年轻代区域
- Major GC清理老年代区域
- Full GC清理老年代、年轻代、永久代。成本高,会对系统性能产生影响
垃圾回收过程
发现垃圾 -> 回收垃圾
垃圾回收常见的两种检测引用算法
- 引用计数法
- 根搜索法
内存泄露常见原因
- 大量拼接字符串时,使用了String而不是StringBuilder
String str = "";
for(int i=0;i < 10000;i++){str += i;//相当于产生了10000个String对象
}
- HashMap、Vector、List的使用
- IO流对象、数据库连接对象、网络连接对象未关闭
- 监听器使用不当
this的用法
创建对象的四步
-
分配对象空间,并将对象成员变量初始化
-
执行属性值的显式初始化
-
执行构造方法
-
返回对象的地址给相关的变量
-
this()调用重载的构造方法(非默认)。但是只能在构造方法中使用,并且必须位于构造方法的第一句 -
this不能用于static方法中
static 静态
静态变量、静态方法生命周期和类相同
特点
- 为该类的公用变量,属于类,被该类的所有实例共享,在类载入时被初始化
- static成员变量只有一份
- 一般用“类名.变量名/方法名”来调用
- 在static方法中不可直接访问非static的成员(可能此时类还没有被实例化)
变量的分类和作用域
- 局部变量——属于方法
- 成员变量——属于对象
- 静态变量——属于类
import
- Java默认会导入
java.lang包下的所有类 java.xxx.*会导入该包下所有的类,会延长编译时间但是不会降低运行速度- 引入同名类时,只能写包名全路径
cn.jia和cn.jia.jia只是在逻辑上看起来有关系,其实是两个完全独立的包- 静态导入
import static java.lang.Math.*这样可以直接使用该包的静态属性和静态方法。比如之前使用π需要Math.PI但是现在只需PI
相关文章:
2-23 switch、JVM内存模型、垃圾回收机制、this、static、变量的分类
文章目录 switch 实现成绩评级JVM内存模型概念栈的特点堆的特点 垃圾回收机制通用的分代垃圾回收机制三种清理算法垃圾回收过程垃圾回收常见的两种检测引用算法内存泄露常见原因 this的用法创建对象的四步 static 静态特点 变量的分类和作用域import switch 实现成绩评级 switc…...
基础!!!吴恩达deeplearning.ai:卷积层
以下内容有任何不理解可以翻看我之前的博客哦:吴恩达deeplearning.ai专栏 文章目录 回顾——密集层 Dense Layer卷积层 Convolutional Neural Network定义优势具体说明心电图卷积层搭建 到目前为止,你使用的所有神经网络层都是密集层类型,这…...
SpringBoot案例(黑马学习笔记)
这个案例呢,就是Tlias智能学习辅助系统。 参考接口文档完成后端功能的开 发,然后结合前端工程进行联调测试即可。 完成后的成品效果展示: 准备工作 需求&环境搭建 需求说明 部门管理 部门管理功能开发包括: ● 查询部门列…...
项目流程图
实现便利店自助付款项目 服务器: 1、并发服务器(多进程、多线程、IO多路复用) 2、SQL数据库的创建和使用(增删改查) 3、以模块化编写项目代码,按照不同模块编写.h/.c文件 客户端: 1、QT客户端界…...
鸿蒙这么大声势,为何迟迟看不见岗位?最新数据来了
对于鸿蒙生态建设而言,2024年可谓至关重要,而生态建设的前提,就是要有足够的开发人才。与之对应的,今年春招市场上与鸿蒙相关岗位和人才旺盛的热度,一方面反应了鸿蒙生态的逐渐壮大,另一方面也让人们对鸿蒙…...
Qt中关于信号与槽函数的思考
信号与槽函数的思考 以pushbutton控件为例,在主界面上放置一个pushbutton控件,点击右键选择关联槽函数,关联一个click函数,如下图所示: 在该函数中,实现了一个点击pushbutton按钮后,弹出一个窗…...
项目技术栈-解决方案-消息队列
项目技术栈-解决方案-消息队列 概念应用场景1. 异步处理 参考文章消息队列(Message Queue) 概念 “消息”是在两台计算机间传送的数据单位。 消息可以非常简单,例如只包含文本字符串; 也可以更复杂 ,包括对象等。 队…...
【深度优先搜索】【图论】【推荐】332. 重新安排行程
作者推荐 动态规划的时间复杂度优化 本文涉及知识点 深度优先搜索 图论 LeetCode332. 重新安排行程 给你一份航线列表 tickets ,其中 tickets[i] [fromi, toi] 表示飞机出发和降落的机场地点。请你对该行程进行重新规划排序。 所有这些机票都属于一个从 JFK&a…...
DAY9-防病毒AV概述
DNS过滤 URL过滤和DNS过滤对比...
TCP缓存
TCP缓存是指TCP协议在数据传输过程中使用的一种机制,用于临时存储和管理数据包。它主要有三个作用:提高网络性能、保证数据的可靠性和实现流量控制。 首先,TCP缓存可以提高网络性能。当发送端发送数据时,TCP协议会将数据分割成若…...
Socket网络编程(一)——网络通信入门基本概念
目录 网络通信基本概念什么是网络?网络通信的基本架构什么是网络编程?7层网络模型-OSI模型什么是Socket?Socket的作用和组成Socket传输原理Socket与TCP、UDP的关系CS模型(Client-Server Application)报文段牛刀小试(TCP消息发送与接收&#…...
RTCA DO-178C 机载系统和设备认证中的软件注意事项-软件质量保证流程(八)
8.0 软件质量保证流程 SOFTWARE QUALITY ASSURANCE PROCESS 本节讨论软件质量保证 (SQA) 过程的目标和活动。 SQA 流程按照软件规划流程(参见 4)和软件质量保证计划(参见 11.5)的定义进行应用。 SQA 过程活动的输出记录在软件质量…...
K 个一组翻转链表 力扣
【玩转校招算法面试】第三天:链表中的节点每k个一组翻转(动画演示、手写 Java 代码、详细注释、LeetCode 高频算法题)_哔哩哔哩_bilibili 初始状态:1 -> 2 -> 3,pre null, cur 1保存当前节点的下一个节点&…...
Java毕业设计 基于SSM SpringBoot vue购物比价网站
Java毕业设计 基于SSM SpringBoot vue购物比价网站 SSM vue 购物比价网站 功能介绍 首页 图片轮播 商品 商品分类 商品详情 评论 收藏 商品攻略 商品信息 公告栏 在线反馈 登录 注册 个人中心 我的收藏 后台管理 登录 注册商品户 个人中心 修改密码 个人信息 商品户管理 用户…...
Linux按键输入实验-按键功能完善
一. 简介 前面一篇文章实现了 按键的字符设备驱动代码框架,文章地址如下: Linux按键输入实验-按键的字符设备驱动代码框架-CSDN博客 本文在 字符设备驱动框架实现的基础上,加入按键GPIO的初始化功能。 二. Linux按键输入实验-按键的GPIO…...
二分查找讲解
关于我为什么要写单独开一篇文章写二分,实际上那么多困难的算法,比如线段树,并查集等等都没有难倒我,我最近却被二分难倒了,而且是两次,两次在赛场上做不出来二分的应用题,于是我决定写一篇二分查找的算法总结.刚接触算法的时候本来是要写一篇的,但后面因为各种原因搁置了,现在…...
跨区域复制建筑UI输入框脚本迷你世界
--复制区域文件 --设置坐标起点,终点 --创建区域 --获取坐标id,data --星空露珠工作室制作 local pos1{x-16,y7,z28} local pos2{x28,y44,z-9} local block{num0} local str{} local str0{} local num0 local count0 local ui6 --几个输入框 local romath.random(…...
取消退出流程控制方法
在自动化设备动作流程中,人为任意想取消当前动作,常见方法是使用全局变量,实时检测变量决定退出。这里介绍一个System.Threading空间下的 CancellationTokenSource类,他可以设置超时,设置信息等封装 基本使用超时和手…...
力扣-跳跃游戏
问题 给你一个非负整数数组 nums ,你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。 判断你是否能够到达最后一个下标,如果可以,返回 true ;否则,返回 false 。 解答 class Solu…...
李沐动手学习深度学习——3.2练习
以下是个人理解,希望进行讨论求解。 练习 1. 如果我们将权重初始化为零,会发生什么。算法仍然有效吗? 根据SGD算法公式如上,第一次迭代的值可知w只与b相关,而对于b的迭代更新,只是与b的初始值相关&#x…...
Vue H5移动端应用集成NFC读取功能的实战解析
1. 为什么要在Vue H5应用中集成NFC功能? 最近两年,越来越多的线下场景开始使用NFC技术。比如商场里的智能货架、博物馆的电子讲解牌、会议签到系统等等。作为一个Vue开发者,我发现很多客户都希望在他们的H5应用中加入NFC读取功能,…...
[ZXMOTO 820RR-RS] [Ducati Panigale V2] [Yamaha YZF-R9]
ZXMOTO 820RR-RS Ducati Panigale V2 Yamaha YZF-R9...
AI Agent在物联网(IoT)中的应用前景
AI Agent在物联网(IoT)中的应用前景:从传感器孤岛到自治协作的智能数字生态 副标题:基于LLM/多模态感知、边缘云协同与分布式自治架构的深度实践与未来展望摘要/引言 问题陈述 当前的物联网(IoT)系统正陷入…...
Python实战:三种GUI库打造可玩性五子棋(附完整源码)
1. 为什么用Python开发五子棋 五子棋作为经典策略游戏,用Python实现不仅能巩固编程基础,还能深入理解游戏逻辑与GUI交互。我最初选择用Python开发五子棋,就是看中它快速验证想法的特性——短短几十行代码就能看到棋子落在棋盘上的效果&#x…...
游戏引擎‘潜规则’:为什么你的法线贴图在Unity里凸,到UE4里就凹了?
游戏引擎‘潜规则’:为什么你的法线贴图在Unity里凸,到UE4里就凹了? 当你在Unity中精心调整的法线贴图导入Unreal Engine后,突然发现所有凹凸细节都出现了诡异的反转——原本凸起的砖缝变成了凹陷的沟槽,金属铆钉的立…...
网盘直链下载助手:八大平台高速下载解决方案
网盘直链下载助手:八大平台高速下载解决方案 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移动云盘 / 天翼云盘 / 迅…...
高效Windows系统优化工具Win11Debloat:智能精简与个性化定制指南
高效Windows系统优化工具Win11Debloat:智能精简与个性化定制指南 【免费下载链接】Win11Debloat A simple, lightweight PowerShell script that allows you to remove pre-installed apps, disable telemetry, as well as perform various other changes to declut…...
网易云音乐NCM文件转换终极指南:3分钟解锁你的音乐收藏
网易云音乐NCM文件转换终极指南:3分钟解锁你的音乐收藏 【免费下载链接】ncmdumpGUI C#版本网易云音乐ncm文件格式转换,Windows图形界面版本 项目地址: https://gitcode.com/gh_mirrors/nc/ncmdumpGUI 还在为网易云音乐下载的NCM文件无法在其他播…...
BiliDownload终极指南:三步快速实现无水印B站视频下载
BiliDownload终极指南:三步快速实现无水印B站视频下载 【免费下载链接】BiliDownload B站视频下载工具 项目地址: https://gitcode.com/gh_mirrors/bil/BiliDownload BiliDownload是一款免费开源的B站视频下载工具,通过调用B站WEB端与TV端API&…...
Multisim14仿真进阶:单管共射放大电路参数扫描与性能优化实战
1. 单管共射放大电路基础与Multisim14环境搭建 单管共射放大电路是模拟电路学习的经典案例,它就像电子世界的"扩音器",能把微弱的电信号放大到我们需要的强度。在Multisim14这个电子工程师的"虚拟实验室"里,我们可以安全…...
