`

通过调用gc()能显式干预JVM吗

 
阅读更多

 

背景:

 面试的时候,常会被问到 能否通过代码控制jvm立即调用垃圾回收这个问题.

 

这个问题涉及到jvm的一些知识,目前没时间来做这块笔记,以后会慢慢写一些文章来说,

 

针对这个题,回答是不可以,

 

执行一个程序,一般都有一个最小内存要求和最大内存要求

eg: java -Xms100M -Xmx200M HelloWorld

就表示显示HelloWorld 最小内存是100M,最大内存要求是200M,如果你系统剩余内存远大于这100M,那么你即使通过调用 gc()方法是不会起到任何作用的,并且还会耗费资源:调用jvm会耗费cpu等资源。

 

 

分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    JVM性能调优.docx

    - `-XX:+DisableExplicitGC` 禁用显式调用垃圾回收,避免了不必要的手动干预,让JVM自行管理内存回收。 - `-XX:SurvivorRatio=1` 设置年轻代中Eden区与Survivor区的比例为2:1,这影响了对象晋升到老年代的策略。 ...

    浅析JAVA之垃圾回收机制.doc

    在Java编程中,垃圾回收机制(Garbage Collection, GC)是一个核心特性,它自动管理内存,使得开发者无需手动释放内存...在开发Java应用时,应尽量减少对垃圾回收机制的干预,让JVM自行管理内存,以实现更高效的运行。

    Java垃圾回收机制详解

    - **显式调用**:可以通过Java API中的`System.gc()`或`Runtime.getRuntime().gc()`方法显式调用GC,但这不是推荐的做法,因为显式调用可能会带来性能问题。 #### 六、GC算法的优缺点分析 - **标记/清扫**:实现...

    javaSE面试宝典

    - **手动回收**:通过调用`System.gc()`或`Runtime.getRuntime().gc()`方法显式请求JVM进行垃圾回收。 #### 三、Error与Exception的区别 - **Error**:通常指系统级错误或无法预料的情况,如内存溢出、JVM故障等,...

    李星华老师讲解java常见面试题笔记

    调用System.gc()会建议JVM进行垃圾回收,但并不保证立即执行。通常,程序员不应过多地干预GC,以避免性能影响。 3. Error与Exception:Error是程序无法处理的严重问题,如系统级错误或虚拟机错误,由JVM负责处理。...

    java初学者必看 java初学者必看

    但在某些特定情况下,如程序运行过程中内存使用量异常大时,可以通过调用`System.gc()`来请求进行一次垃圾回收。需要注意的是,尽管这种方法可以立即请求垃圾回收,但它并不是一个强制命令,JVM可能会选择忽略这次...

    Java垃圾回收机制e.pdf

    Java垃圾回收机制是Java语言中一个重要的特性,它负责自动管理程序中的内存,避免程序员手动...在编写代码时,尽量减少对`System.gc()`的使用,避免对垃圾回收过程进行不必要的干预,以确保JVM能有效地进行内存管理。

    Java虚拟机讲解,欢迎下载

    ### Java虚拟机(JVM)详解 #### Java虚拟机概述 Java虚拟机(JVM)是一种专为执行Java字节码而设计的虚拟计算机环境。它不仅支持Java语言编写的程序,还能运行其他编译为目标字节码的语言如Groovy、Scala等。JVM的...

    认知Java,入门介绍

    - **手动建议**: 尽管不能强制执行,但可以通过调用`System.gc()`或`Runtime.getRuntime().gc()`来建议JVM进行垃圾回收。 #### 类的加载与初始化 Java虚拟机加载类的过程包括三个主要阶段: 1. **加载**: - ...

    Java堆的管理--垃圾回收

    `System.gc()`是一个可以请求JVM执行垃圾回收的方法,但它并不保证JVM会立即执行。另外,`System.runFinalization()`用于强制运行所有待终态化的对象的`finalize()`方法。然而,过度使用这些方法可能会影响程序性能...

    Java run-time monitoring

    - **智能分析**:通过智能算法自动检测异常行为,减少人工干预的需求。 - **可定制化**:支持用户根据具体需求配置监控指标和警报规则。 - **可视化展示**:通过图表和仪表盘展示关键性能指标,便于理解和分析。 ##...

    java中创建对象的步骤有哪些.txt

    虽然通常不需要手动干预这一过程,但在特殊情况下,可以调用`System.gc()`方法来建议JVM执行一次垃圾收集。需要注意的是,调用`System.gc()`并不能保证立即执行垃圾收集。 ### 总结 通过上述步骤,我们了解了如何...

    北大青鸟JAVA面试题

    虽然JAVA的自动垃圾回收减轻了程序员管理内存的负担,但有时仍需人工干预,比如通过调用`System.gc()`来建议JVM执行垃圾回收。 ### 10. 异常断言 异常断言(Assert)用于验证程序中的假设是否成立,如果断言失败,...

    Java笔试题目.doc

    程序员可以调用`System.gc()`尝试触发垃圾回收,但并不保证GC一定会执行,因为这取决于JVM的具体实现和当前的运行状况。 3. **手动触发**:虽然可以尝试手动触发,但一般建议让JVM自动管理内存,避免过多干预导致...

    《java程序设计习题集》读书笔记上册

    可以通过调用`System.gc()`来请求进行垃圾回收,但实际上何时执行由JVM决定。 2. **Java程序的运行流程** - 类加载器(Class Loader)负责将字节码文件加载到内存中。 - 字节码验证器(Bytecode Verifier)确保...

    一些IT企业的面试题

    虽然可以通过调用System.gc()方法尝试触发垃圾回收,但并不建议这样做,因为垃圾回收的时间点由JVM决定,过度干预可能导致性能下降。 ### Java多线程 Java支持多线程编程,允许程序同时执行多个任务。多线程能够...

    JAVA笔试基础知识题目

    - **垃圾回收调用** 可以通过 `System.gc()` 来建议 JVM 进行垃圾回收,但实际执行时间由 JVM 决定。 ### 9. Java 的 Collection Framework - **Collection Interface** 定义了集合的基本操作。 - **Set** 接口...

    C#面试问题大全

    C#中的GC由CLR自动管理,程序员无需手动干预。 ### Overload与Override - **Overload**(重载)是指在同一个类中,允许存在多个具有相同名称但参数列表不同的方法。 - **Override**(重写)是指在派生类中重新实现...

    Android全面面试题带答案

    在Android中,内存回收是由垃圾收集器(Garbage Collector, GC)自动完成的,无需程序员手动干预。 **关键知识点详解:** 1. **内存回收的责任主体:** - **选项B** 正确地指出了内存回收的任务由系统内部的内存...

    android70道面试题

    尽管Java提供了`System.gc()`方法试图触发垃圾回收,但并不推荐使用,因为垃圾回收器的触发时机由JVM控制。 - D:内存回收程序可以在指定的时间释放内存对象 - 错误。垃圾回收的时机是不确定的,不能由程序员精确...

Global site tag (gtag.js) - Google Analytics