Java中的垃圾回收

关于Java垃圾回收机制的几点:

1. What ?

Java中除了基本类型之外都是对象,基本类型分配的是堆栈内存,对象时通过new分配的堆内存。不同于C或C++,对象没有析构函数,Java是通过垃圾回收机制回收对象的内粗的。也就是当一个对象没有被其他对象或变量使用和引用的时候,该对象就属于无用的对象,在某种情况下,Java的垃圾回收机制就会回收这些无用的对象,以释放堆内存。


2. When ?

垃圾回收需要开销,所以Java虚拟机在内存充裕时有可能不会对无用的对象进行垃圾回收,也就是垃圾回收在程序运行的过程中没有进行。在系统濒临内存耗尽的情况下,垃圾回收通常会进行。如果在程序退出的时候垃圾回收还一直没有进行,那么随之程序的退出,分配在堆上的内存空间等资源会交付给操作系统。也就是说垃圾回收是需要开销的,垃圾回收只会在必要的时候进行,这种垃圾回收机制并不保证程序运行过程中进行。


3. How ?

垃圾回收是否在程序运行期间执行是通过Java虚拟机对当前系统内存的紧迫程度的判断决定的,如果想在程序运行的某个时刻希望执行垃圾回收,可以调用System.gc()。该代码的作用是告知Java虚拟机希望执行一次垃圾回收,但是并不保证该代码一定会让Java虚拟机进行垃圾回收。


4. finalize

在垃圾回收执行(如果Java虚拟机执行了垃圾回收)对某一个对象进行垃圾回收时,会调用该对象的finalize方法,该方法是基类Object的一个方法,可以在finalize方法中执行一些清理以及资源释放操作,比如在对象中通过调用C或C++通过malloc分配了内存,那么就可以在finalize中调用相应的free函数释放掉之前分配的内存。由此看来Java对象中的finalize方法有点类似于C++中的析构函数。最佳实践是除了内存以外,不能依赖垃圾回收器去做任何事,如果需要进行清理,最好是编写你自己的清理方法(比如编写名为dispose之类的方法),然后在确定要清理的时候手动调用该自定义的清理方法。

基于开源大模型的教学实训智能体软件,帮助教师生成课前备课设计、课后检测问答,提升效率与效果,提供学生全时在线练习与指导,实现教学相长。 智能教学辅助系统 这是一个智能教学辅助系统的前端项目,基于 Vue3+TypeScript 开发,使用 Ant Design Vue 作为 UI 组件库。 功能模块 用户模块 登录/注册功能,支持学生和教师角色 毛玻璃效果的登录界面 教师模块 备课与设计:根据课程大纲自动设计教学内容 考核内容生成:自动生成多样化考核题目及参考答案 学情数据分析:自动化检测学生答案,提供数据分析 学生模块 在线学习助手:结合教学内容解答问题 实时练习评测助手:生成随练题目并纠错 管理模块 用户管理:管理员/教师/学生等用户基本管理 课件资源管理:按学科列表管理教师备课资源 大屏概览:使用统计、效率指数、学习效果等 技术栈 Vue3 TypeScript Pinia 状态管理 Ant Design Vue 组件库 Axios 请求库 ByteMD 编辑器 ECharts 图表库 Monaco 编辑器 双主题支持(专业科技风/暗黑风) 开发指南 # 安装依赖 npm install # 启动开发服务器 npm run dev # 构建生产版本 npm run build 简介 本项目旨在开发一个基于开源大模型的教学实训智能体软件,帮助教师生成课前备课设计、课后检测问答,提升效率与效果,提供学生全时在线练习与指导,实现教学相长。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值