精华帖 (0) :: 良好帖 (2) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2012-12-17
smilerain 写道 内存溢出会有OutOfMemoryError错误。
OutOfMemoryError错误出现的时候不一定就是内存溢出的原因,一个是表象,一个是原因 OutOfMemoryError: Thrown when the Java Virtual Machine cannot allocate an object because it is out of memory, and no more memory could be made available by the garbage collector. 求解释为什么不一定。 |
|
返回顶楼 | |
发表时间:2012-12-17
以后说中文面试的面试官你就直接pass它掉算了。
IT技术更新快,中文术语翻译本来就很混乱。 |
|
返回顶楼 | |
发表时间:2012-12-17
大牛只是一个传说
|
|
返回顶楼 | |
发表时间:2012-12-17
按我的理解吧
内存溢出是指由于编程的问题,使得应用的内存占用随着时间的增加不断增长,并且这部分的内存占用却没有任何意义 而'java.lang.OutOfMemoryError'是由于程序使用的内存超过了JVM分配的内存(默认的,或手动初始化过的),而不一定是错误的内存使用,内存的占用也不会随着时间的增加不断增加,占用的内存也都是有意义的。 内存泄露同内存溢出。 总之:内存溢出/内存泄漏是应用BUG,而'java.lang.OutOfMemoryError'是因为没有对JVM按实际的需求进行初始化 |
|
返回顶楼 | |
发表时间:2012-12-17
那头牛大概是想说java的分代垃圾回收吧
|
|
返回顶楼 | |
发表时间:2012-12-18
我觉楼上的有些跑题了,大家讨论内存溢出的问题和 out of memory , 怎么扯上内存泄露了?
|
|
返回顶楼 | |
发表时间:2012-12-18
这个应该不是问题吧?
内存溢出是指使用了不是分配给你的内存,最典型的是,c语言类,申请了10个字节长度的空间,却复制10个以上字节的数据到这个空间中,超出部分就会占用了其他的空间(有可能是其他程序的空间),改变了其他的空间内存数据结构,导致程序异常,或者被获取高权限。 OutOfMemoryError 是申请内存空间时,java虚拟机没有足够的内存分配,为了防止占用其他空间,java虚拟机抛出这种异常。 一个是事后后果,一个是事前预防。内存溢出会导致自身出现问题,其他程序出现问题,甚至整个操作系统都出现问题。OutOfMemoryError 只会导致自身被java虚拟机干掉,以便保护其他程序和操作系统。 话又说回来,java的内存管理,已经解决了最典型的内存溢出问题,因为一旦出现这种情况,会抛出数组越界异常。 java只有在下面两种情况会出现内存溢出问题: 1,关闭OutOfMemoryError 检查(只有sb才会干的事情) 2,使用jni(不过用了jni就是c、c++的问题了,跟java没有啥关系了) 从这个角度看,java的java的'内存溢出' 和 'java.lang.OutOfMemoryError' 可以近似认为是同一回事。 此外,众多回帖中还提到内存泄露问题,内存泄露是不停累积申请了,但又不使用,不释放的内存。不管哪种语言,代码质量不高都会产生这个问题,这个问题不会导致内存溢出,但最终会导致OutOfMemoryError。 |
|
返回顶楼 | |
发表时间:2012-12-18
earneet 写道 我觉楼上的有些跑题了,大家讨论内存溢出的问题和 out of memory , 怎么扯上内存泄露了?
楼主带的头……请看三楼 |
|
返回顶楼 | |
发表时间:2012-12-18
dohkoos 写道 内存溢出(out of memory/memory overflow)就是你要求分配的内存超出了系统能给你的。
内存泄漏(memory leak)就是没有及时释放内存资源。 内存泄漏不是内存溢出,但内存泄漏必然导致内存溢出。 内存溢出就是out of memory,表示内存资源不足了。 这为兄弟分析到位,我用我的c经验证明! |
|
返回顶楼 | |
发表时间:2012-12-18
扯这么多,为什么不让那个“架构师”来解释一下,有什么不同呢?
|
|
返回顶楼 | |