【发布时间】:2015-12-06 09:08:11
【问题描述】:
我有 java 服务器应用程序,它使用许多库(netty、guava 等)。我总是将此应用程序导出为一个 .jar。当我在 Eclipse 中运行应用程序时,我没有任何问题。但是,如果我在控制台中启动应用程序(Windows 或 Ubuntu,没关系),我会遇到奇怪的问题:所有通过套接字的连接进程持续时间过长。例如,通过 HttpAsync 或其他(rabbitmq 连接等)的简单 http 连接持续 1-2 分钟。但连接完成后,数据发送/接收速度很快。我想不出是什么问题。如前所述,我使用 Eclipse 进行开发。
如您所知,您可以通过 3 种不同的方式导出项目(在 Eclipse 中):
- 将所需的库提取到 JAR 中。
- 将所需的库打包到 JAR 中。
- 将所需的库复制到 JAR 旁边的子文件夹中。
所以,当我使用 2 选项时,我遇到了问题。当我切换到 3d 选项(主 .jar 附近的文件夹中的所有 .jar)时,问题就解决了。
通常 2 和 3 选项之间没有太大区别(在 2 个所有 .jar 中,一个罐子内)。我认为这是在从 jar 执行时加载新类所需的额外时间的原因。但问题不仅出现在开始时,而且出现在所有新连接上。
有人可以解释这种行为吗?
UPD: Eclipse Luna。无论我使用什么操作系统(Windows 或 Ubuntu),甚至使用什么 jvm(尝试使用不同的 Oracle jdk,甚至尝试打开 jdk)都无关紧要。
【问题讨论】:
-
既然您知道问题点(
connections),我认为您需要在枚举步骤中包含/排除外部库的单元测试。
标签: java eclipse maven jar jvm