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

面试官问:如何手动触发垃圾回收?幸好昨天复习到了

在Java中,手动触发垃圾回收可以使用 System.gc() 方法。但需要注意,调用 System.gc() 并不能确保立即执行垃圾回收,因为具体的垃圾回收行为是由Java虚拟机决定的,而不受程序员直接控制。

public class GarbageCollectionExample {public static void main(String[] args) {// 创建一些对象Object obj1 = new Object();Object obj2 = new Object();// 打印初始时内存情况printMemoryStatus("Before Garbage Collection");// 手动触发垃圾回收System.gc();// 打印触发垃圾回收后的内存情况printMemoryStatus("After Garbage Collection");// 其他业务逻辑}private static void printMemoryStatus(String message) {Runtime runtime = Runtime.getRuntime();long freeMemory = runtime.freeMemory();long totalMemory = runtime.totalMemory();long maxMemory = runtime.maxMemory();System.out.println(message + ":");System.out.println("Free Memory: " + freeMemory + " bytes");System.out.println("Total Memory: " + totalMemory + " bytes");System.out.println("Max Memory: " + maxMemory + " bytes");System.out.println("------------------------");}
}

在上面的代码中,通过 printMemoryStatus 方法打印了内存状态,包括空闲内存、总内存和最大内存。在手动触发垃圾回收之前和之后,都打印了内存状态。

运行一下上面的代码,会得到以下的结果:

Before Garbage Collection:
Free Memory: 6958680 bytes
Total Memory: 8336096 bytes
Max Memory: 12573056 bytes
------------------------
After Garbage Collection:
Free Memory: 7446808 bytes
Total Memory: 8336096 bytes
Max Memory: 12573056 bytes
------------------------

需要注意的是,垃圾回收的触发和执行是由Java虚拟机决定的,因此实际的结果可能会有所不同。在正常情况下,Java虚拟机会根据内存状况和程序运行状态自动执行垃圾回收,无需手动触发。手动调用 System.gc() 可能并不会立即执行垃圾回收。

http://www.lryc.cn/news/254040.html

相关文章:

  • 操作系统的运行机制+中断和异常
  • Python实战:批量加密Excel文件指南
  • 二叉树链式结构的实现和二叉树的遍历以及判断完全二叉树
  • vue中的动画组件使用及如何在vue中使用animate.css
  • qt 5.15.2 网络文件下载功能
  • Wifi adb 操作步骤
  • 湿货 - 231206 - 关于如何构造输入输出数据并读写至文件中
  • EasyMicrobiome-易扩增子、易宏基因组等分析流程依赖常用软件、脚本文件和数据库注释文件
  • 【Python百宝箱】漫游Python数据可视化宇宙:pyspark、dash、streamlit、matplotlib、seaborn全景式导览
  • 企业数字档案馆室建设指南
  • JavaScript中处理时间差
  • Multidimensional Scaling(MDS多维缩放)算法及其应用
  • 单片机_RTOS_架构
  • Golang rsa 验证
  • 网络安全威胁——跨站脚本攻击
  • Java利用UDP实现简单的双人聊天
  • HBase整合Phoenix
  • C# 委托/事件/lambda
  • 13款趣味性不错(炫酷)的前端动画特效及源码(预览获取)分享(附源码)
  • C# 友元程序集
  • CRM系统的数据分析和报表功能对企业重要吗?
  • 【单体架构事务失效解决方式之___代理对象加锁】
  • 面试被问到 HTTP和HTTPS的区别有哪些?你该如何回答~
  • 点评项目——短信登陆模块
  • 2023亚太地区五岳杯量子计算挑战赛
  • Python 模块的使用方法
  • 【知识】稀疏矩阵是否比密集矩阵更高效?
  • 代码随想Day24 | 回溯法模板、77. 组合
  • 搜索与回溯算法②
  • Centos图形化界面封装OpenStack Ubuntu镜像