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

问题描述

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()的内存?如果不会,要怎样释放?

解决方案

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

解决方案二:

http://blog.csdn.net/jdsjlzx/article/details/6652778

解决方案三:

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

时间: 2024-10-25 02:40:14

线程-Java关于死循环创建对象释放内存的问题的相关文章

java通过jni获取C++的数组需要释放内存么

问题描述 java通过jni获取C++的数组需要释放内存么 java通过jni获取C++的数组需要释放内存么?因为数组是通过java传进去的,但是在c++中经过一次类型转换所以不知道需不需要在c++中重新释放内存 解决方案 参考: http://blog.csdn.net/jiangwei0910410003/article/details/17653803 解决方案二: 数组要释放吗?从来没有听说过,只要动态申请的内存才需要释放的. 解决方案三: 一般申请与释放的原则是:谁申请.谁释放,如果是

Java中用软引用阻止内存泄漏

在本文中,他将解释 Reference 对象的另外一种形式,即软引用(soft references),用于帮助垃圾收集器管理内存使用和消除潜在的内存泄漏. 垃圾收集可以使 Java 程序不会出现内存泄漏,至少对于比较狭窄的 "内存泄漏" 定义来说如此,但是这并不意味着我们可以完全忽略 Java 程序中的对象生存期(lifetime)问题.当我们没有对对象生命周期(lifecycle)引起足够的重视或者破坏了管理对象生命周期的标准机制时,Java 程序中通常就会出现内存泄漏.例如,上一

java循环集合-java中死循环是什么意思

问题描述 java中死循环是什么意思 java中死循环是什么意思 循环一次不再循环是死循环还是不断循环才是死循环能否简单的举个死循环单身例子 解决方案 死循环就是循环语句的条件是永远为真,那么循环体将一直执行,一楼说的并不对,循环不一定会导致内存溢出的,只是Java程序一直运行.简单的死循环实例while(true){某个操作,但是没有break语句}循环体中也没有终止循环的break,就是死循环了. 解决方案二: 不断循环直到你內存溢出 解决方案三: while(true){System.ou

java循环体里边创建对象,它的执行过程是怎样的?

问题描述 java循环体里边创建对象,它的执行过程是怎样的? public class Test { public static void main(String[] args) { for(int i=0;i<10;i++) { Object obj = new Object(); } } } 比如说上边这一段代码,越看越不对劲了,它难道是在main方法栈中先后创建了10个引用叫obj?然后每个obj指向不同的new出来的对象? 解决方案 单步调试下就知道了,正常的逻辑是这样的,可能编译器优化

释放指针对象内存-QList中的指针成员无法释放内存,大家是怎么做的?

问题描述 QList中的指针成员无法释放内存,大家是怎么做的? QThread * thread = new QThread(); QList * list = new QList(); list->append(thread); 然后遍历QList中的线程,当某个线程运行完后释放内存 delete list->takeAt(i); 但发现程序运行很久后占用的内存在增大,是不是delete list->takeAt(i);没有释放掉内存 解决方案 加一句list->takeAt(i

Jna调用dll文件,怎么释放内存

问题描述 本人初次有Java调用dll,但是用jna调用dll,内存怎么处理Jna调用dll文件,怎么释放内存,最好有代码

让.NET程序快速释放内存的办法

原文:让.NET程序快速释放内存的办法 公司里的一个程序,经过了N个人的手后发现上了生产内存会一直涨,直到物理内存几乎被占用完毕后突然就下降下来(估计是GC给释放了),然后再一直涨.这个程序主要是对字符串进行处理,困扰了我好几天,本机测试内存也有增长的趋势,但是不大明显,上生产是2.3分钟内存就上G,没找到究竟哪里的问题.从网上搜了些资料,看到可以让.NET立即释放内存,本地简单测试了一下,真的管用,但是没敢用,不知道对于多线程的程序,当一个线程显示释放内存时会不会影响到其他线程,而且我是做金融

Windows 2003中巧妙释放内存资源

经常看到有朋友在论坛上诉苦说需要释放内存,其实如果你安装了 Windows 2003 的话,那么并不需要寻求那些需要注册才能长久使用的第三方内存管理软件.因为Windows 2003已经自带了一个名为Empty.exe的小程序,它可以用来释放某些应用程序在占用大量内存时不能及时释放的那部分资源,与那些第三方软件内存管理软件不同的是,Empty.exe不会强迫系统全部释放资源,而是仅仅释放必要的资源,这样就不会加重硬盘的负担了. Empty.exe的使用相当简单,命令格式如下: Empty.exe

Linux释放内存的方法

在Linux系统下,我们一般不需要去释放内存,因为系统已经将内存管理的很好.但是凡事也有例外,有的时候内存会被缓存占用掉,导致系统使用SWAP空间影响性能,此时就需要执行释放内存(清理缓存)的操作了.    Linux系统的缓存机制是相当先进的,他会针对dentry(用于VFS,加速文件路径名到inode的转换).Buffer Cache(针对磁盘块的读写)和Page Cache(针对文件inode的读写)进行缓存操作.但是在进行了大量文件操作之后,缓存会把内存资源基本用光.但实际上我们文件操作