我是一名c ++程序员,我对Java知之甚少.我知道java程序员不必像C++一样直接使用内存.我也知道C++应用程序中的大多数崩溃都是由于内存损坏造成的.
因为与内存相关的问题,用Java编写的应用程序是否会崩溃?
谢谢
Kon*_*lph 49
与其他一些答案相反,我声称Java程序会经常崩溃,甚至可能比C++程序更频繁地崩溃.
通过"崩溃",大多数人都明白程序遇到的错误未得到妥善处理,导致应用程序终止.嗯,这当然发生了,与Java处理内存的方式无关.
这是一个很好的事情.是什么让C++变得如此危险,而Java相对安全,恰恰相反,Java 会在C++很乐意继续运行的情况下崩溃,尽管做了非常错误和潜在危险的事情(例如写入未初始化的内存,溢出缓冲区......) .Java的崩溃(例如抛出异常)可以防止更严重的破坏.另一方面,C++应用程序(由于未能在错误上终止)可能会损坏外部数据或系统.或者他们可能只是提供了一个错误的(但看似合理的)结果.
Java 正在反对这些危险,而不是反对崩溃本身.
jef*_*ter 16
java可以崩溃.
原因可能是......
OutOfMemoryError
StackoverFlowError
OutOfMemoryError: PermGen space.
Run Code Online (Sandbox Code Playgroud)
OutOfMemoryError 当Java虚拟机由于内存不足而无法分配对象时抛出,垃圾收集器不再提供更多内存.
StackoverFlowError 抛出执行堆栈溢出错误的StackOverflowException,通常是在非常深或无限递归的情况下.
OutOfMemoryError:PermGen space 详细消息PermGen space表示永久生成已满.永久生成是堆的区域,其中存储类和方法对象.如果应用程序加载了大量类,则可能需要使用-XX:MaxPermSize选项增加永久代的大小.
问题是关于可能导致崩溃的内存问题.
其他可能导致崩溃但可以被程序捕获并从posibilty恢复的问题 是任何runtimeExceptions.即
ArithmeticException,ArrayStoreException信息,BufferOverflowException,BufferUnderflowException,CannotRedoException,CannotUndoException,ClassCastException异常,CMMException,ConcurrentModificationException的,抛出:DOMException,的EmptyStackException,抛出:IllegalArgumentException,抛出:IllegalMonitorStateException,IllegalPathStateException,IllegalStateException异常,ImagingOpException,IndexOutOfBoundsException异常,MissingResourceException异常,NegativeArraySizeException,NoSuchElementException异常,空指针异常,ProfileDataException,ProviderException,抛出:RasterFormatException,抛出:SecurityException, SystemException,UndeclaredThrowableException,UnmodifiableSetException,UnsupportedOperationException
我不会在这里进入这些.但看看...... 链接文字
是的,它可以 :)
public void test() {
test();
}
Run Code Online (Sandbox Code Playgroud)
这会崩溃StackoverFlowError.还有其他几个 - 例如,内存不足也会导致崩溃(OutOfMemoryError).