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

标签 java performance memory

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

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

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

是否有任何替代构建或更受控制的启动可以实现此目的?

最佳答案

如果快速启动是您的目标,PC 上的 Java 可能不是您的最佳选择。这将需要几秒钟的时间,因为这是从磁盘加载虚拟机所需的时间。

如果您希望您的应用程序启动得更快,那么很容易获得启动屏幕,只需创建一个仅加载启动屏幕的模块,等待它完全显示,然后使用反射链接到您的“真实”主模块.

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

如果你谈论的是运行时性能,你不会通过改变语言来变得更快,Java 已经是你能达到的最快速度了。您可能可以通过转换为 C/C++ 并重写它以适应这些平台(更少的 OO、堆栈分配而不是堆等)来获得提升,但除此之外,一般使用的其他语言在速度上都无法接近 Java .

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

另一种可能性 - 如果您经常启动/关闭小任务,这就是启动困扰您的原因,那么您绝对可以通过保持其不可见运行来加速它。只需让您的 Java 应用程序打开一个套接字并监听命令,然后创建一个小 .EXE 或 shell 脚本,该脚本可以在程序未运行时启动您的程序,或者向该套接字发送命令(如果正在运行)。这将完全消除首次运行后的初创公司。

关于java - 如何减少java程序的启动时间和内存消耗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3980507/

相关文章:

java - 如何将对象数组传递给方法

c - 为什么我的变量在我的 C 程序中递归调用时改变值?

c++ - 它会导致内存泄漏吗?

memory - 使用什么来查看 Spark 的内存使用情况(使用 YARN)?

java - 为什么 Google Cloud Key Management Service 的 Java 客户端库不支持 Android?

java - Maven 程序集为 tar 设置用户名

java - java中对象的内存管理

java - 何时使用 List<Long> 而不是 long[]?

android - AsyncLayoutInflator 陷阱

performance - 为什么 Document.html() 这么慢?