在C ++中,必须删除动态分配的数组,除非它在内存中丢失。在java中,我们是否必须这样做,如果是这样的话。你是怎么做的
答案 0 :(得分:2)
在Java编程语言中,使用new运算符实现对象的动态分配。创建的对象使用一些内存,并且内存保持分配状态,直到有对象的使用参考。当没有对象的引用时,假定不再需要它,并且可以回收对象占用的内存。当java自动处理解除分配时,没有明确需要销毁对象。实现此目的的技术称为垃圾收集。当系统中没有剩余内存要分配时,不解除内存的程序最终会崩溃。据说这些程序有内存泄漏。
在Java中,垃圾收集在java程序的生命周期内自动发生,无需取消分配内存并避免内存泄漏。 在C语言中,程序员有责任使用free()函数解除分配动态分配的内存。 阅读更多http://www.javatutorialhub.com/java-garbage-collection.html#wpewoJfMWffgXd8O.99
答案 1 :(得分:1)
我不明白你对动态数组的定义。你的意思是一个项目的集合,其长度是未知的,初始化它?如果是,那么您正在讨论诸如ArrayList之类的集合。
您不必担心删除对象。当JVM不再使用或they're out of scope时,它将处理您的对象。
JVM分析代码的执行,它将调用一个名为Garbage Collector的特殊组件,它将从无用/超出范围的对象中清除执行代码。
例如,当您拥有此代码时:
if(condition)
{
string myStr = "test";
//other code here
}
变量myStr
,因为它不再被使用(它超出了if
语句的范围),JVM将标记为垃圾收集。
答案 2 :(得分:0)
开发人员不必担心在java中释放内存。 Java垃圾收集器为您完成此操作。您可以阅读它的工作原理here