Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/333.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.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 UNIX服务器中前台进程比后台进程快的原因_Java_Unix - Fatal编程技术网

Java UNIX服务器中前台进程比后台进程快的原因

Java UNIX服务器中前台进程比后台进程快的原因,java,unix,Java,Unix,我们将在UNIX服务器上运行Java应用程序。为了在前台运行它,我们使用下面的代码并将其放入文件中 #! /bin/ksh /usr/java14_64/bin/java -classpath /clocal/mptsgrp/user/mptsuser/configcfa/classes:/clocal/mptsgrp/user/mptsuser/configcfa/mqjavalib/xerces.jar::$CLASSPATH -Djava.library.path=/usr/lpp/mq

我们将在UNIX服务器上运行Java应用程序。为了在前台运行它,我们使用下面的代码并将其放入文件中

#! /bin/ksh

/usr/java14_64/bin/java -classpath
/clocal/mptsgrp/user/mptsuser/configcfa/classes:/clocal/mptsgrp/user/mptsuser/configcfa/mqjavalib/xerces.jar::$CLASSPATH
-Djava.library.path=/usr/lpp/mqm/lib:/clocal/udb/db2inst1/sqllib/java/sqlj.zip:/clocal/udb/db2inst1/sqllib/java/db2qgjava.jar:/clocal/udb/db2inst1/sqllib/java/Common.jar:/clocal/udb/db2inst1/sqllib/java/db2umplugin.jar:/clocal/udb/db2inst1/sqllib/java/db2policy.jar:/clocal/udb/db2inst1/sqllib/java/db2dbgm.jar:/clocal/udb/db2inst1/sqllib/java/db2jcc_license_cu.jar:/clocal/udb/db2inst1/sqllib/java/db2jcc_javax.jar:/clocal/udb/db2inst1/sqllib/java/db2java.zip:/clocal/udb/db2inst1/sqllib/java/db2jcc.jar:/usr/mqm/java/lib:/clocal/udb/db2inst1/sqllib/lib:/clocal/mptsgrp/user/mptsuser/mqjavalib:/clocal/mptsgrp/user/mptsuser/mqjavalib/com.ibm.mq.jar:/clocal/mptsgrp/user/mptsuser/mqjavalib/com.ibm.mqbind.jar:/clocal/mptsgrp/user/mptsuser/mqjavalib/com.ibm.mqjms.jar:/clocal/mptsgrp/user/mptsuser/mqjavalib/jms.jar:/clocal/mptsgrp/user/mptsuser/mqjavalib
-Dcfa.config.file=/clocal/mptsgrp/user/mptsuser/configcfa/9hpcfa3/config/build_9hpcfa3.properties
-Xms16m -Xmx64m Main
要从后台运行,我们使用以下代码并将其放入文件:

#! /bin/ksh

nohup /usr/java14_64/bin/java -classpath
/clocal/mptsgrp/user/mptsuser/configcfa/classes:/clocal/mptsgrp/user/mptsuser/configcfa/mqjavalib/xerces.jar::$CLASSPATH
-Djava.library.path=/usr/lpp/mqm/lib:/clocal/udb/db2inst1/sqllib/java/sqlj.zip:/clocal/udb/db2inst1/sqllib/java/db2qgjava.jar:/clocal/udb/db2inst1/sqllib/java/Common.jar:/clocal/udb/db2inst1/sqllib/java/db2umplugin.jar:/clocal/udb/db2inst1/sqllib/java/db2policy.jar:/clocal/udb/db2inst1/sqllib/java/db2dbgm.jar:/clocal/udb/db2inst1/sqllib/java/db2jcc_license_cu.jar:/clocal/udb/db2inst1/sqllib/java/db2jcc_javax.jar:/clocal/udb/db2inst1/sqllib/java/db2java.zip:/clocal/udb/db2inst1/sqllib/java/db2jcc.jar:/usr/mqm/java/lib:/clocal/udb/db2inst1/sqllib/lib:/clocal/mptsgrp/user/mptsuser/mqjavalib:/clocal/mptsgrp/user/mptsuser/mqjavalib/com.ibm.mq.jar:/clocal/mptsgrp/user/mptsuser/mqjavalib/com.ibm.mqbind.jar:/clocal/mptsgrp/user/mptsuser/mqjavalib/com.ibm.mqjms.jar:/clocal/mptsgrp/user/mptsuser/mqjavalib/jms.jar:/clocal/mptsgrp/user/mptsuser/mqjavalib
-Dcfa.config.file=/clocal/mptsgrp/user/mptsuser/configcfa/9hpcfa3/config/build_9hpcfa3.properties
-Xms16m -Xmx64m Main 1> /dev/null &

在我们的应用程序中,我们不确定,但是在处理数据时,后台进程似乎比前台进程慢20-30%。我们将在日志中写入大量信息。

我看到的唯一相关区别是,在“后台”情况下,您实际上没有执行任何IO:您的应用程序的所有输出都被简单地丢弃,而在另一种情况下,您说您“将其放在文件中”:这需要时间,特别是如果有很多这样的问题。FG和BG进程都放在文件中,并快速运行,如何执行IO对不起,我是unix新手,所以我想问一下,请解释如何使用IO以使java程序运行得更快。但是,为什么它的后台比forgroundOk慢,你怎么称呼它们呢?在前台的情况下,输出会发生什么?它会被打印到终端吗?那么你就有问题了:终端正在减慢你的应用程序的速度。如果有很多输出(日志文件有多大?它包含的内容是否与打印到控制台的内容相同),那么这个输出确实可以解释差异。请尝试使用
time
命令(在BG和FG中)运行应用程序,以检查这一点。@user2936008 IO的要点是,nohup将程序的输出写入名为nohup.out的文件——如果您通过将其重定向到/dev/null放弃其输出,并且其运行速度比问题所在的更快:)(附:您可以通过uname命令找到正在使用的unix变体,可能是“uname-a”)