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…...
label-studio的使用教程(导入本地路径)
文章目录 1. 准备环境2. 脚本启动2.1 Windows2.2 Linux 3. 安装label-studio机器学习后端3.1 pip安装(推荐)3.2 GitHub仓库安装 4. 后端配置4.1 yolo环境4.2 引入后端模型4.3 修改脚本4.4 启动后端 5. 标注工程5.1 创建工程5.2 配置图片路径5.3 配置工程类型标签5.4 配置模型5.…...
3.3.1_1 检错编码(奇偶校验码)
从这节课开始,我们会探讨数据链路层的差错控制功能,差错控制功能的主要目标是要发现并且解决一个帧内部的位错误,我们需要使用特殊的编码技术去发现帧内部的位错误,当我们发现位错误之后,通常来说有两种解决方案。第一…...
使用van-uploader 的UI组件,结合vue2如何实现图片上传组件的封装
以下是基于 vant-ui(适配 Vue2 版本 )实现截图中照片上传预览、删除功能,并封装成可复用组件的完整代码,包含样式和逻辑实现,可直接在 Vue2 项目中使用: 1. 封装的图片上传组件 ImageUploader.vue <te…...
Java 加密常用的各种算法及其选择
在数字化时代,数据安全至关重要,Java 作为广泛应用的编程语言,提供了丰富的加密算法来保障数据的保密性、完整性和真实性。了解这些常用加密算法及其适用场景,有助于开发者在不同的业务需求中做出正确的选择。 一、对称加密算法…...
反射获取方法和属性
Java反射获取方法 在Java中,反射(Reflection)是一种强大的机制,允许程序在运行时访问和操作类的内部属性和方法。通过反射,可以动态地创建对象、调用方法、改变属性值,这在很多Java框架中如Spring和Hiberna…...
Matlab | matlab常用命令总结
常用命令 一、 基础操作与环境二、 矩阵与数组操作(核心)三、 绘图与可视化四、 编程与控制流五、 符号计算 (Symbolic Math Toolbox)六、 文件与数据 I/O七、 常用函数类别重要提示这是一份 MATLAB 常用命令和功能的总结,涵盖了基础操作、矩阵运算、绘图、编程和文件处理等…...
EtherNet/IP转DeviceNet协议网关详解
一,设备主要功能 疆鸿智能JH-DVN-EIP本产品是自主研发的一款EtherNet/IP从站功能的通讯网关。该产品主要功能是连接DeviceNet总线和EtherNet/IP网络,本网关连接到EtherNet/IP总线中做为从站使用,连接到DeviceNet总线中做为从站使用。 在自动…...
算法岗面试经验分享-大模型篇
文章目录 A 基础语言模型A.1 TransformerA.2 Bert B 大语言模型结构B.1 GPTB.2 LLamaB.3 ChatGLMB.4 Qwen C 大语言模型微调C.1 Fine-tuningC.2 Adapter-tuningC.3 Prefix-tuningC.4 P-tuningC.5 LoRA A 基础语言模型 A.1 Transformer (1)资源 论文&a…...
GitFlow 工作模式(详解)
今天再学项目的过程中遇到使用gitflow模式管理代码,因此进行学习并且发布关于gitflow的一些思考 Git与GitFlow模式 我们在写代码的时候通常会进行网上保存,无论是github还是gittee,都是一种基于git去保存代码的形式,这样保存代码…...
Vue 模板语句的数据来源
🧩 Vue 模板语句的数据来源:全方位解析 Vue 模板(<template> 部分)中的表达式、指令绑定(如 v-bind, v-on)和插值({{ }})都在一个特定的作用域内求值。这个作用域由当前 组件…...
