gpt4 book ai didi

java - 内存泄漏概念 - 初学者水平

转载 作者:行者123 更新时间:2023-12-01 13:17:53 25 4
gpt4 key购买 nike

我是一名初级程序员,正在尝试理解内存泄漏的概念 - 主要是在 Java 中,因为我目前正在学习 Java。有人能帮我看看这些例子是否存在内存泄漏吗?

Student s1, s2;

//case I
s1 = new Student("John",20);
s1 = new Student("Mark",19);
// did I just lose the address to John, 20?


//case II:
s1 = new Student("John",20);
s2 = new Student("Mark",19);

s2 = s1;
// did I just lose the address to Mark,19?

最佳答案

不,它们不是内存泄漏。当对象被分配并且不能被垃圾处理时,就会出现内存泄漏。由于您没有保留对第一个分配的学生(在第一个示例中)或第二个分配的学生(在第二个示例中)的任何引用,因此该实例可能会被垃圾处理,因此不会发生泄漏。

现在,想象一下你这样做

s1 = new Student("John",20);
myHashMap.put(s1, 33);
s1 = new Student("Mark",19);
myHashMap.put(s1, 43);

然后你保留对 s1 第一个版本的引用,如果你继续创建学生并且不清理 map ,那么就会发生内存泄漏。保存在内存中的映射是内存泄漏的常见情况。

请注意,在正常的 java 程序中内存泄漏并不常见。

关于java - 内存泄漏概念 - 初学者水平,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22319941/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com