首页 > 试题广场 >

java程序内存泄露最直接的表现是?

[单选题]
java程序内存泄露的最直接表现是( )
  • 频繁FullGc
  • jvm崩溃
  • 程序抛内存溢出的Exception
  • java进程异常消失
推荐
答案:C
java是自动管理内存的,通常情况下程序运行到稳定状态,内存大小也达到一个 基本稳定的值
但是内存泄露导致Gc不能回收泄露的垃圾,内存不断变大.
最终超出内存界限,抛出OutOfMemoryExpection
编辑于 2019-05-05 14:29:19 回复(15)
答案 C,依次解释一下相关选项
首先理解一下内存泄漏的概念,内存泄漏就是对象引用消失了,对象内存却没有被回收。
A答案:FullGC 是老年代内存空间不足的时候,才会触发的,老年代一般是生命周期较长的对象或者大对象,频繁的 FullGC 不会可能会影响程序性能(因为内存回收需要消耗CPU等资源),但是并不会直接导致内存泄漏。
B 答案:JVM奔溃的可能是内存溢出引起的,也可能是其他导致 JVM崩溃的操作,例如设置了错误的JVM参数等。
C 答案:内存异常,最常见的 就是 StackOverFlow 了把,内存溢出,其实内存泄漏的最终结果就是内存溢出。所以,基本上C是对的答案。
D 答案:Java 进程异常消失,这个明显不对的。
发表于 2015-10-11 19:52:46 回复(6)
“程序抛内存控制的Exception”
java只有OutOfMemoryError,是Error。
java没有OutOfMemoryException。
C#倒是有OutOfMemoryException。
发表于 2019-05-27 15:12:45 回复(5)
我觉得把C选项的Exception换成异常就可以了,虽然准确的说这是一个Error,但是口语化常把内存溢出叫做OOM异常。常见的OOM异常有以下6种。
  1. OutOfMemoryError:Java heap space 堆内存不够
  2. OutOfMemoryError:GC overhead limit exceeded GC回收时间过长,过长是指98%的时间用来GC却回收不到2%的堆内存
  3. OutOfMemoryError:Direct buffer memory 堆内存充足但本地内存可能已经使用光
  4. OutOfMemoryError:unable to create new native thread 创建了太多线程,超过了系统承载极限
  5. OutOfMemoryError:Metaspace 元空间内存不够
  6. StackOverflowError 栈内存不够
发表于 2020-06-03 20:24:58 回复(0)
内存泄漏:leak of memory,一个对象分配内存之后,在使用结束时未及时释放,导致一直占用内存,没有及时清理,使实际可用内存减少,就好像内存泄漏了一样
发表于 2019-05-10 18:06:06 回复(2)
C选项不大对,内存泄露应该是OutOfMemoryError,属于error 而不是exception
A选项频繁GC就是因为内存泄露导致内存不够用,所以频繁GC
有点不严谨吧
发表于 2020-04-22 16:59:23 回复(0)
凯头像
我的答案是A  ,对于答案B我觉得不至于内存泄露到那种程度 ,在内存不够的情况下,jvm会触发fullGC,如果fullGC后还不够,才会jvm崩溃。
发表于 2014-12-20 10:07:23 回复(1)
为什么不是A呢 先是内存泄露造成了内存不足,然后gc被频繁触发,最后才是内存溢出吧,有人能解答一下吗?
发表于 2019-05-29 15:52:47 回复(0)
不管是内存泄露还是内存溢出,都会抛出内存异常Exception。 内存泄露的原因,对象空间没有及时回收。 内存溢出的原因,申请空间不足。
发表于 2020-08-13 18:36:48 回复(0)
答案:C java是自动管理内存的,通常情况下程序运行到稳定状态,内存大小也达到一个 基本稳定的值 但是内存泄露导致Gc不能回收泄露的垃圾,内存不断变大. 最终超出内存界限,抛出OutOfMemoryExpection
发表于 2020-09-15 08:52:06 回复(1)
内存泄露,不就是内存使用率过高吗?当老年代的使用率达到某个境界值的时候不就是会进行fullgc吗?有遇到过内存泄露的问题,程序还是在运行也没有报错,就是监控一直在gc,但是泄露程度也没达到然后进程挂掉的地步
发表于 2019-12-28 08:55:11 回复(1)
感觉答案不对,应该是A,在OOM前,一定会使用FullGC来试图腾出更大的空间,并且OOM是Error,不是Exception
发表于 2022-08-07 16:27:03 回复(0)
Gc不能回收垃圾,内存增长,报错
发表于 2021-07-03 11:23:11 回复(0)
查了一下,OutOfMemory是Error,不是Exception
发表于 2021-03-29 14:21:31 回复(0)
我想说下A,题目说的是直接表现 ,而不是原因。如果你不是内存泄露,为什么会频繁fullgc呢。
发表于 2019-07-04 23:39:52 回复(2)
程序抛出异常
发表于 2019-05-07 00:41:41 回复(0)
看见c选项是Exception直接排除了。。。
发表于 2020-10-04 23:31:24 回复(1)
mark
发表于 2023-09-16 15:45:51 回复(0)
内存泄露指对象引用消失,但是对象所分配的空间无法回收。
编辑于 2023-08-09 22:52:26 回复(0)

内存泄漏是指程序中已分配的内存空间在不再使用时无法被回收,导致内存占用不断增加。当内存泄漏达到一定程度时,会导致内存溢出(OutOfMemoryError)异常被抛出。因此,选项C是内存泄漏最直接的表现。

选项A:频繁Full GC 虽然内存泄漏可能导致垃圾回收器执行频繁的Full GC(Full Garbage Collection),但频繁的Full GC并不一定直接表明内存泄漏。Full GC的频繁发生可能是由于程序需要回收大量的内存空间,而不仅仅是内存泄漏所导致的。

选项B:JVM崩溃 内存泄漏通常不会直接导致JVM崩溃。JVM崩溃通常是由于其他严重的问题,例如无限递归、栈溢出等。虽然内存泄漏可能最终导致内存耗尽,从而影响JVM的正常运行,但它不是直接导致JVM崩溃的原因。

选项D:Java进程异常消失 内存泄漏不会导致Java进程异常消失。内存泄漏可能会导致程序变得非常缓慢或响应时间延长,甚至导致内存耗尽,但它不会直接导致Java进程异常消失。

发表于 2023-05-22 22:25:41 回复(1)
内存泄漏可能导致gc不会发生
发表于 2023-03-15 18:10:07 回复(0)