如何减少java程序的启动时间和内存消耗?

时间:2010-10-20 17:08:05

标签: java performance memory

我认为java的最新更新版本可以提供更好的性能。

我正在寻找一种方法来实现从无限循环或内存泄漏中分离软件组件。 Android将每个应用程序隔离在自己的进程中,Google Chrome将每个选项卡隔离在自己的进程中。

我的主要缺点是java需要很长时间才能启动,我也希望减少内存消耗。

是否有任何替代构建或更多受控启动才能实现此目的?

3 个答案:

答案 0 :(得分:2)

如果快速启动是您的目标,PC上的Java可能不是您最好的选择。这需要几秒钟,因为从磁盘加载VM需要多长时间。

如果你想让你的应用程序更快地启动,很容易获得启动画面,只需创建一个仅加载启动画面的模块,等待它完全显示然后使用反射链接到“Real”主模块

(使用反射,否则它会在启动主程序之前通过引用引入整个程序 - 至少它是以前的工作方式)。

如果您正在讨论运行时性能,那么通过更改语言就可以更快地获得Java,而Java的速度可以达到最快。您可以通过转换为C / C ++并重写它以适应这些平台(少OO,堆栈分配而不是堆等)来获得提升,但是否则通用的其他语言都没有接近Java的速度

如果你真的需要快速启动,根据你正在做的事情,可能会有一些技巧。我见过的项目试图让Java VM在你的工具栏中运行,并允许你发出请求(告诉它启动应用程序)。这样更快但是对用户提出了额外的要求(加载此附加工具)

另一种可能性 - 如果你不断启动/关闭小任务,这就是启动困扰你的原因,你肯定可以通过让它无形地运行来加快速度。只需让你的Java应用程序打开一个套接字并监听命令,然后创建一个.EXE或shell脚本,如果它没有运行就可以启动你的程序,如果是,则发送命令到该套接字。这将在第一次运行后完全消除启动。

答案 1 :(得分:1)

通常,Java的启动时间比其他语言长得多。如果您在桌面应用程序上坚持使用Java,那么启动时间等很多东西都是由客户端计算机上安装的JRE决定的,而这是您无法控制的。

至于“无休止的内存泄漏”...... Java不泄漏内存。如果您的程序有,请修复它。

答案 2 :(得分:0)

这是第二个答案,因为它完全不同而我的另一个太长了:)

尝试编译它 - 我认为GCC可以编译它。这几乎可以完全消除你的创业。我相信Jikes曾经是IBM的Windows java编译器,但我不知道它是否仍然存在。

请注意,对于长时间运行的应用程序,编译代码的运行速度可能比JVM代码慢。