2 chaobaby94 ChaoBaby94 于 2016.01.29 13:15 提问

Java关于死循环创建对象释放内存的问题

代码:
while(true){

//2.
Socket s = ss.accept();
// Thread updateThread = new Thread(new UpdateTask(s));
// updateThread.start();//开启线程
// -- 使用线程池 --
threadPool.execute(new UpdateTask(s));
}
上面代码每次new UpdateTask();但是没跳出循环,java每次执行完一个Runnable任务后会不会释放UpdateTask()的内存?如果不会,要怎样释放?

3个回答

wojiushiwo945you
wojiushiwo945you   Ds   Rxr 2016.01.29 13:29
已采纳

这里不存在你说的内存释放问题吧,你开启的线程执行完成后就销毁了,而此轮循环中创建的对象如果没有再被引用的时候,它的内存会自动被垃圾回收器回收的。

rui888
rui888   Ds   Rxr 2016.01.29 13:20
bdmh
bdmh   Ds   Rxr 2016.01.29 13:28

如果任务里执行完,就会自动结束线程,除非你线程里面是while死循环,那样就不行了

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
(8) 一个死循环一直不停的new对象过程中的垃圾回收的情况
---------------------------------------------------------------------------------------------------------------- 1.这段程序长期运行会有什么结果?  (以为运行久了会OOM 但是不会)   (没有配置-Xms -Xmx 默认) 程序中第一次new的对象在第二次new的时候失
下列哪些语句关于内存回收的说明是正确的? (b ) A、 程序员必须创建一个线程来释放内存
最易懂的设计模式解析:单例模式(Singleton) 前言今天我来全面总结一下Android开发中最常用的设计模式 - 单例模式。  关于设计模式的介绍,可以看下我之前写的:1分钟全面了解“设计模式”目录1. 引入1.1 解决的是什么问题之前说过,设...http://www.xiami.com/collect/207573283?spm=a1z1s.2929273.1561564893.2.v
Delphi分配或释放内存失败的原因
并不是Delphi本身的问题,而是代码的问题。有时候,访问非法堆栈内存时,Delphi并不抛出异常,这样就导致部分堆内存结构破坏(链表结构破坏)。当自己使用的堆栈内存不多时,表现不出来错误;有时多加一个Format函数调用,里面调用SetString函数时,出现GetMem失败的问题(一直死循环,或者抛出异常),是因为已经分配到结构被破坏的内存链表。   procedure TForm
一段死循环引发的Java heap space类型的OutOfMemory
一段死循环引发的Java heap space类型的OutOfMemory
什么是垃圾收集
【考题题干】关于垃圾收集的哪些叙述是对的? A.垃圾收集将检查并释放不再使用的内存。 B.垃圾收集允许程序开发者明确指定并立即释放该内存。 C.程序开发者必须自己创建一个线程进行内存释放的工作。 D.垃圾收集能够在期望的时间释放被 Java 对象使用的内存。 【试题分析】Java 语言将内存分配和释放的工组交给了自己,程序员不必做这些工作,它提供一个
如何解决PHP里大量数据循环时内存耗尽的问题 PHP
如何解决PHP里大量数据循环时内存耗尽的问题 PHP    您的评价:       0.0 收藏     1收藏 来自: http://www.linuxeden.com/html/news/20160124/164500.html 最近在开发一个PHP程序时遇到了下面的错误: PHP
JVM——java对象生命周期(引用类型 创建对象规则)
在JVM运行空间中,对象的整个生命周期大致可以分为7个阶段:创建阶段(Creation)、应用阶段(Using)、不可视阶段(Invisible)、不可到达阶段(Unreachable)、可收集阶段(Collected)、终结阶段(Finalized)与释放阶段(Free)。上面的这7个阶段,构成了 JVM中对象的完整的生命周期。下面分别介绍对象在处于这7个阶段时的不同情形。 创建阶段 在
Java基础(数组-内存空间的划分)
寄存器是cpu的,我们不用管 本地方法区:这个跟所有系统相关的,java虚拟机,分版本,调用不同系统的内容 栈内存。        存储的都是局部变量。        而且变量所属的作用域一旦结束,该变量就自动释放。
mongodb释放内存
1、use admin db.shutdownServer(); 这种适合在副本集的模式下分批重启集群,这样也不会影响业务,重启一台后在切换主从,保证业务正常。
C语言堆内存管理上出现的问题,内存泄露,野指针使用,非法释放指针
C语言堆内存管理上出现的问题,内存泄露,野指针使用,非法释放指针 (1)开辟的内存没有释放,造成内存泄露 (2)野指针被使用或释放 (3)非法释放指针 (1)开辟的内存没有释放,造成内存泄露,下面的例子就可能造成20个字节的泄露,内存泄露不是一个立即会引发故障的错误,但是 它将消耗系统内存。 void function1() { char *pa; pa = (