Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java如何在这样运行时停止冻结linux操作系统?_Java_Linux_Swing - Fatal编程技术网

Java如何在这样运行时停止冻结linux操作系统?

Java如何在这样运行时停止冻结linux操作系统?,java,linux,swing,Java,Linux,Swing,我有一个问题,我的应用程序冻结。当我使用新的P2P(“字符串”)这是一个很重的GUI 我的困惑是,在while循环中运行它的最佳方式是什么?这样就不会释放整个操作系统了 示例用例: public void run() { while (true) { byte[] buf = new byte[5024]; int bytes_read = 0; bytes_read = sockInput.read(buf, 0, buf.length)

我有一个问题,我的应用程序冻结。当我使用新的P2P(“字符串”)这是一个很重的GUI

我的困惑是,在while循环中运行它的最佳方式是什么?这样就不会释放整个操作系统了

示例用例:

public void run() {
    while (true) {
      byte[] buf = new byte[5024];
      int bytes_read = 0;      
      bytes_read = sockInput.read(buf, 0, buf.length);
      String data = null;
      data = new String(buf, 0, bytes_read);
      System.out.println("[TCP]: incomeing data: " + bytes_read + " bytes, data=" + data);

      //
      // get some commands on TCP parse it and trigger this
      //
      new P2P(main.my_info_array);
      // After some time the whole OS freeze requires shutdown reboot physically
      // how to improve it

    }
  }

在后台线程(即事件调度线程以外的线程)中执行长时间运行的任务。这是必需的,因为Swing是单线程的。有关详细信息,请参阅。

好的,请执行以下操作:

1) 告诉我们您的操作系统(如CentOS 5.5)、硬件(如4-CPU 2.4GHz奔腾、2GB RAM)和JDK(如Sun Java、32位1.6.021)

2) 如果可能,请指定指向P2P库的链接以及版本#

3) 修改代码,使其只读取套接字并调用P2P一次(即,请注释掉循环)

4) 在单独的终端窗口中运行“top”

5) 运行你的程序。观察您的程序是否突然开始消耗大量内存和/或CPU。“顶部”在冻结前最后说什么


6) 报告你的发现。

什么是P2P?在不知道它的功能和行为方式的情况下,不太可能有人能提供帮助问:当“冻结”发生时,您能转到另一个控制台,或者“ping”或“ssh”到主机吗?你能做一个“ps-eaf”来看看它是CPU绑定的还是内存绑定的吗?@YumYumYum-你能告诉我们“ping”和/或“telnet/ssh”中的任何一个是否有效吗?如果可能的话,请尝试获取“top”和/或“ps-eaf”输出,好吗?@palsm4:当时没有一个可以工作。@Jim Garrison:P2P是一个swing GUI界面,有很多图标和背景图像,GUI只是一个JWindow,Jbutton组合。我们需要从OP获得更多关于“冻结”的信息。如果应用程序挂起(但操作系统很好)一根线是个好主意。否则,如果“P2P()”真的破坏了系统,我们需要知道如何以及为什么,然后才能修复它:)知道我们是否可以“ping”,或者尝试运行“top”或“ps-eaf”,这绝对是一个好的开始。没错。OP的问题不是冻结GUI,而是冻结系统。我认为这个答案有点言之过早,过于简单化了。@paulsm4,很公平!对于气垫船,我同意不成熟的说法,但考虑到我在答案中所述,我不认为这个答案“过于简单化”。@paulsm4:当P2P()在分钟或随机持续时间后启动时。它冻结了。冻结,我的意思是整个系统冻结,所以就像死锁一样,什么都不起作用。我需要物理重启/关机。没有点没有终端没有工作没有鼠标,键盘没有。