Java中对象为null和调用对象清除方法clear()的不同

简介: Java中对象为null和调用对象清除方法clear()的不同

痛苦了好多天的问题,以为是自己对框架的不熟悉导致在调用某各类的参数时,出现异常现象。解决的方法从《Thinking in Java 》第四版第2章一切都是对象、第5章初始化与清理中获得,综合了Stack Overflow上的一些观点。


在编程的过程中,会经历这样一种情形:在方法的结尾将对象赋值为null和清空集合的操作。其实这对于垃圾回收器来说没有意义。垃圾回收器对于方法内部的变量的回收很容易执行。


1,Java中new 出来的对象,也叫对该对象的引用,JVM(Java 虚拟机)垃圾回收机制会根据其寿命决定何时回收该对象。很多时候不需要自己去清除。

切记:Java中的对象被不总是被垃圾回收器回收,即


  • 对象可能不会被垃圾回收;
  • 垃圾回收并不等于“析构”(C++)中;
  • 垃圾回收只与内存有关。


2,在多线程中,尽量将类的全局变量转换为为局部变量,或者在方法和循环内部定义,再者取决于变量作用域,垃圾回收器更容易决定其是否应该被回收。


3,将对象的值赋值为null,相当于把对象的引用清除掉,即把引用对象的指针kill掉,再使用集合就会报空指针异常;调用集合的clear()方法,是把集合内部的对象都清空,而集合的引用还存在


4,将集合作为参数传递到方法中,相当于把集合的引用传递到方法中,在方法中执行任何和集合相关的清除操作,相当于对集合执行清除操作。【上述解决方法解决不了问题,尝试此方法】


相关文章
|
2天前
|
Java Spring
面对Spring 不支持java8的改变方法
面对Spring 不支持java8的改变方法
|
2天前
|
Java
Java list中的对象转为list,list中的对象转为map
Java list中的对象转为list,list中的对象转为map
|
3天前
|
存储 缓存 安全
Java性能优化(二):Java基础-String对象及其性能优化
在深入探讨了String字符串的性能优化后,我们认识到优化字符串处理对提升系统整体性能的重要性。Java在版本迭代中,通过精心调整成员变量和内存管理机制,不断对String对象进行优化,以更高效地使用内存资源。String对象的不可变性是Java语言设计中的一个关键特性,它不仅确保了字符串的安全性,也为字符串常量池的实现提供了基础。通过减少相同值的字符串对象的重复创建,常量池有效地节约了内存空间。然而,不可变性也带来了挑战。在处理长字符串拼接时,我们需要显式使用类来避免性能下降。
13 1
|
3天前
|
设计模式 Java 测试技术
Java一分钟之-PowerMock:静态方法与私有方法测试
【6月更文挑战第4天】PowerMock是扩展Mockito的框架,用于模拟静态方法、构造函数和私有方法,以增强Java单元测试的隔离性和覆盖率。核心应用场景包括静态方法模拟、私有方法测试和Final类模拟。常见问题包括配置复杂、过度使用和忽略模拟的真实行为。解决方案包括遵循官方文档、谨慎使用PowerMock、精确控制模拟逻辑和遵循最佳实践。示例展示了如何模拟静态方法,通过添加PowerMock依赖和使用`PowerMockRunner`、`PrepareForTest`注解,以及`PowerMockito.mockStatic`和`verifyStatic`方法进行测试。
26 0
Java一分钟之-PowerMock:静态方法与私有方法测试
|
3天前
|
Java 测试技术 数据库
Java一分钟之-Mockito:模拟对象测试
【6月更文挑战第4天】Mockito是Java单元测试中的模拟框架,用于创建和配置模拟对象以隔离测试代码。核心概念包括:模拟对象、预期行为(定义方法调用响应)、验证(检查方法调用)和捕获参数。常见问题包括过度模拟、忽略未使用的模拟调用、不恰当配置和误用Mockito注解。解决方案包括正确选择模拟对象、验证所有交互、仔细配置模拟行为及在测试类中正确使用Mockito注解。提供的代码示例展示了如何使用Mockito模拟和验证方法调用,以实现独立且准确的测试。学习和避免这些易错点可提升测试效率和代码质量。
18 0
Java一分钟之-Mockito:模拟对象测试
|
4天前
|
Java 编译器 C语言
18. 【Java教程】类和对象
18. 【Java教程】类和对象
9 1
|
4天前
|
Java 编译器
17. 【Java教程】Java 方法
17. 【Java教程】Java 方法
14 0
|
6天前
|
XML Java 数据格式
Java一分钟之-JAXB:Java对象到XML绑定
【6月更文挑战第1天】Java Architecture for XML Binding (JAXB) 是Java平台标准,用于自动转换Java对象和XML。它通过注解实现声明式映射,简化XML处理。本文介绍了JAXB的基本使用、常见问题和最佳实践,包括对象到XML(Marshalling)和XML到对象(Unmarshalling)过程,并通过示例展示如何在Java类和XML之间进行转换。注意类型匹配、注解冲突和JAXB上下文创建等问题,以及如何优化性能和避免循环引用。
16 3
|
7天前
|
存储 Java
深入探索Java语言中的方法
深入探索Java语言中的方法
|
7天前
|
存储 Java
Java语言中的类与对象:深入理解与实践
Java语言中的类与对象:深入理解与实践