在线求助:java多线程与内存的使用

kikikeke 2007-06-28 04:14:41
我有一个程序,要占用很大的内存,但是又要用多线程的,所以内存占用量很大,
现在程序运行过程中突然不动了。也不抛出异常,物理内存的可以利用的部分不足10M。运行时加了java -Xms128m -Xmx1024m
请问有什么办法解决中止的问题?
...全文
306 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
kikikeke 2007-06-28
  • 打赏
  • 举报
回复
但是我程序又没有同时去改变一个变量的值,怎么会死锁呢?
kikikeke 2007-06-28
  • 打赏
  • 举报
回复
for (int j = 0; j < pImageList.length; j++) {
boolean flag = true;
if (threads.size() < threadNum) {
ImageDivideProcess idp = new ImageDivideProcess();
idp.setPImageName(pImageList[j].getName());
Thread t = new Thread(idp);
threads.addElement(t);
t.start();
} else {
while (flag) {
try {
Thread.sleep(100);
} catch (InterruptedException ite) {
ite.printStackTrace();
}
for (int i = 0; i < threads.size(); i++) {
Thread t = threads.elementAt(i);
if (!t.isAlive()) {
threads.removeElementAt(i);
ImageDivideProcess idp = new ImageDivideProcess();
idp.setPImageName(pImageList[j].getName());
t = new Thread(idp);
threads.addElement(t);
t.start();
flag = false;
break;
}
}
}
}
}
}
kikikeke 2007-06-28
  • 打赏
  • 举报
回复
一个小时
zqrqq 2007-06-28
  • 打赏
  • 举报
回复
>>>硬盘好像也停止了。
那肯定是死锁了嘛

如果是内存问题,肯定是会抛异常的
检查你的程序!
kikikeke 2007-06-28
  • 打赏
  • 举报
回复
硬盘好像也停止了。
zqrqq 2007-06-28
  • 打赏
  • 举报
回复
多久没有反应?如果只是几秒,可能是在做内存回收
kikikeke 2007-06-28
  • 打赏
  • 举报
回复
死锁应该是没有的,因为在更大内存上的机子上就不会出问题,我现在的疑问是如果内存不够应该抛出异常,但是没有任何反应。
tdy1234 2007-06-28
  • 打赏
  • 举报
回复
多线程 +大内存 可能是死锁 ,你把你程序法上来看看才知道
zqrqq 2007-06-28
  • 打赏
  • 举报
回复
>>>运行中就突然停住了
你怎么知道停住了?

如果真的是停住了,是死锁吗?

>>>需要手动才能停止
逻辑上的停止条件是什么,你希望什么时候它自己停止

kikikeke 2007-06-28
  • 打赏
  • 举报
回复
比如一个bat文件,运行中就突然停住了,需要手动才能停止。
Gnayuil 2007-06-28
  • 打赏
  • 举报
回复
关注哈
zqrqq 2007-06-28
  • 打赏
  • 举报
回复
>>>请问有什么办法解决中止的问题?
难道程序无法正常终止?

楼主到底是想解决什么问题?

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧