一、建议
不要调用system.gc,即使经常出现内存溢出也不要调用,内存溢出是可分析的,是可以查找原因的,GC可不是一个好招数。
二、分析
System.gc主动进行垃圾回收时一个非常危险的动作。因为它要停止所有的响应,才能检查内存中是否有可回收的对象,这对一个应用系统风险极大。
三、场景
如果一个Web应用,所有的请求都会暂停,等待垃圾回收器执行完毕,若此时堆内存(Heap)中的对象少的话则可以接受,一旦对象较多(现在的Web项目越做越大,框架工具越来越多,加载到内存中的对象就更多了),这个过程非常耗时,可能是0.01秒,也可能是1秒,甚至可能是20秒,这就会严重影响到业务的正常运行。
又如这样一段代码:new String("abc"),该对象没有任何引用,对JVM来说就是个垃圾对象。JVM的垃圾回收器线程第一次扫描(扫描时间不确定,在系统不繁忙的时候执行)时把它贴上一个标签,说“你是可以给回收的”,第二次扫描时才真正地回收该对象,并释放空间。如果我们直接调用System.gc,就等于说“嗨,你,那个垃圾回收器过来检查一下有没有垃圾对象,回收一下”。程序主动招来了垃圾回收器,这意味着正在运行着的系统要让出资源,以供垃圾回收器执行。
相关推荐
随着Java的发展,出现了许多优秀的框架和工具,如Spring框架、Hibernate框架、Maven构建工具等,它们极大地提高了开发效率和代码质量。 - **Spring框架**:一个轻量级的企业级应用开发框架,提供依赖注入...
9. **设计模式**:设计模式是软件设计的最佳实践,如单例、工厂、装饰器、代理、观察者、策略等23种设计模式,理解和运用它们可以提高代码质量。 10. **Java面试技巧**:除了技术知识,良好的沟通能力、问题解决...
以上就是Java考试中涉及到的一些核心概念和知识点,掌握这些内容对于理解和编写高质量的Java代码至关重要。在实际编程中,理解并熟练运用这些知识点可以帮助开发者编写出更加健壮、高效和易于维护的程序。
这些主题构成了JAVA编程语言中的高级特性,对于提升代码质量、增强程序的健壮性和灵活性具有至关重要的作用。 ### 1. JDK核心类库API #### 1.1 java.lang.Object类 作为所有Java类的基础,`java.lang.Object`类...
JVM 负责解释执行 Java 字节码,同时提供了内存管理、安全性和垃圾回收等功能,以确保 Java 应用程序的正确执行。 #### JRE (Java Runtime Environment) Java 运行环境(JRE)包括了 JVM 和 Java 类库,是运行 ...
Java 开发工程师需要具备 Java 基础扎实,熟悉对象/内存模型,了解 JVM 垃圾回收机制,对多线程锁机制,如重量级锁,轻量级锁,CAS 等有深刻理解,了解 Java 网络 IO(BIO/NIO/AIO),熟练使用 MySQL,对 MySQL 索引...
根据给定文件的信息,我们可以提炼出以下IT领域的关键知识点,主要围绕Java编程语言中的类继承、接口、访问...掌握这些核心概念,将有助于在实际编程工作中更好地理解和运用面向对象的编程原则,提高代码质量和效率。
- **测试**:实现单元测试,确保代码质量及稳定性。 - **文档**:提供详尽的使用指南和API文档,帮助用户快速集成和使用。 #### 3. Java类何时以及如何被加载和初始化? - **类加载机制**:Java虚拟机采用双亲委派...
在软件开发领域,良好的程序结构不仅是代码质量的体现,也是维护性和可扩展性的保障。本篇文章基于一个资深IT人士的经验分享,深入探讨了编写高质量代码的关键要素,尤其强调了J2EE、Java及软件工程领域的最佳实践。...
8. JVM实时监控:关注Java虚拟机的性能,包括内存使用、垃圾回收、类装载、线程和会话监控。 9. 应用拓扑可视化:自动识别和绘制应用组件的调用关系,展示业务交易的全链路流程。 10. 慢SQL语句分析:监控SQL执行...
### 百度校园招聘历年经典面试题汇总:Android岗 #### 1. MVP模式的优缺点 ... JVM垃圾回收算法 - **标记-清除算法**:先标记出所有要回收的对象,再进行清除。 - **复制算法**:将内存分为两块,每次只使用一块...
最后,考虑到性能优化,Java的垃圾回收机制(GC)和内存管理是关键。开发者需要合理设计数据结构和算法,避免内存泄漏,同时监控应用性能,确保在高并发情况下仍能稳定运行。 综上所述,news_app是一个充分利用Java...