2016 - 2024

感恩一路有你

不持久什么原因 java中while(true)死循环会造成JVM内存溢出吗?

浏览量:1349 时间:2021-03-16 21:59:53 作者:admin

java中while(true)死循环会造成JVM内存溢出吗?

1. 在死循环中定义局部变量会导致堆栈溢出,例如以下定义:

while(true){

int x=1;

int arr[]=New int[10];

}]因为堆栈空间存储局部变量、参数和其他对象,所以堆栈有一个默认深度,我记得是128M(内存问题,请指出)如果错误)。

2. 在启动循环中定义对象会导致堆内存溢出,如以下定义:

(true){

person P=new person()

}

对象的生成会占用时间和空间,因为内存空间有限,迟早会导致堆内存溢出。

所以我们写代码是为了养成一个好习惯,不在特殊情况下,不在循环中定义局部变量和对象。

哪些操作会导致Python内存溢出,怎么处理?

您好,谢谢您的提问。刚才,我也遇到了Python内存溢出的问题。我和你分享我的例子,希望能对你有所帮助。

内存溢出:使用malloc或new来申请内存块空间,但不使用free和delete来释放内存块,导致程序失去对内存块的控制。

我的解决方案如下:

在本机编译器中,如果定义如下

a=1000

B=1000

打印ID(a),ID(B)

,您会发现这两个结果是不同的。ID()用于查看对象的内存地址。如果我们定义大量的int变量,就有可能出现内存溢出。

检查,python for small integer object,[-5257)是预先分配的内存地址。如果超出此范围,则使用常规缓冲池。对于大整数,pyintblock用作缓冲池。所以我们有上述现象。

对于相同的int变量值,如果使用a=b=1000,则ID(a)和ID(b)的内存地址相同,可以在一定程度上降低溢出的可能性。

在非本机编译器中,上述情况似乎已得到优化。在eclipse中测试时,相同的值通常是相同的内存地址。

jvm的内存模型?怎么栈溢出,堆溢出?gc?真的用到过没?

但是在正常编程中,我们必须经常遇到oom问题。JVM的内存模型只是堆栈结构。事实上,记忆的划分是非常复杂的。推荐“深入Java虚拟机”入门。堆栈溢出和堆溢出,顾名思义,就是当堆栈和堆上的内存不足时抛出oom异常。您可以通过调整参数来控制堆栈的内存大小:-XMN-xmxgc是堆、堆栈和方法区域的垃圾收集行为。这些问题还需要阅读和打字。

不持久什么原因 怎么变持久 怎样能更持久

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。