首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java程序会崩溃吗?

Java程序会崩溃吗?
EN

Stack Overflow用户
提问于 2010-05-19 16:15:40
回答 11查看 4.5K关注 0票数 26

我是一个c++程序员,我对java略知一二。我知道java程序员不必像C++那样直接使用内存。我还知道C++应用程序中的大多数崩溃都是由于内存损坏造成的。

那么,用Java编写的应用程序是否会因为内存相关问题而崩溃呢?

谢谢

EN

回答 11

Stack Overflow用户

回答已采纳

发布于 2010-05-19 16:28:51

与其他一些答案相反,我认为Java程序崩溃的频率与C++程序一样高,甚至可能更高。

通过“崩溃”,大多数人理解为程序遇到了一个没有得到正确处理的错误,从而导致应用程序终止。当然,这种情况会发生,与Java处理内存的方式无关。

这是一件好事。使C++变得如此危险和相对安全的原因正是这样一个事实,即在C++可以愉快地继续运行的情况下,尽管做了非常错误和潜在的危险事情(例如写入未初始化的内存、溢出缓冲区、…),Java也会崩溃。。Java的崩溃(例如抛出异常)可以防止更严重的破坏。另一方面,C++应用程序(由于错误终止失败)可能会损坏外部数据或系统。或者,他们可能只是带来了一个错误的(但看似合理的)结果。

Java防范的是这些危险,而不是崩溃本身。

票数 49
EN

Stack Overflow用户

发布于 2010-05-19 16:17:20

java可能会崩溃。

原因可能是..

代码语言:javascript
复制
OutOfMemoryError
StackoverFlowError
OutOfMemoryError: PermGen space.

当Java Virtual Machine由于内存不足而无法分配对象,并且垃圾收集器无法提供更多的内存时抛出OutOfMemoryError

如果出现执行堆栈溢出错误,则会抛出StackoverFlowError StackOverflowException,这通常发生在非常深的或无限递归的情况下。

OutOfMemoryError: PermGen空间详细消息PermGen空间表示永久生成已满。永久生成是堆中存储类和方法对象的区域。如果应用程序加载了非常多的类,那么可能需要使用-XX:MaxPermSize选项增加永久生成的大小。

这个问题是关于可能导致崩溃的内存问题。

其他可能导致崩溃,但可以被程序捕获并从可能的情况下恢复的问题是任何runtimeExceptions。即

ArithmeticException,ArrayStoreException,BufferOverflowException,BufferUnderflowException,CannotRedoException,CannotUndoException,ClassCastException,CMMException,ConcurrentModificationException,DOMException,EmptyStackException,IllegalArgumentException,IllegalMonitorStateException,IllegalPathStateException,IllegalStateException,ImagingOpException,IndexOutOfBoundsException,MissingResourceException,

我不会在这里讨论这些。但是看一看...link text

票数 16
EN

Stack Overflow用户

发布于 2010-05-19 16:19:15

是的,它可以:)

代码语言:javascript
复制
public void test() {
    test();
}

这将使用StackoverFlowError崩溃。还有一些其他的-例如,耗尽内存也会导致崩溃(OutOfMemoryError)。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2863836

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档