有没有办法将大量Java变量保存在内存中以节省加载时间?

有没有办法将大量Java变量保存在内存中以节省加载时间?,java,memory,intellij-idea,Java,Memory,Intellij Idea,我正在使用IntelliJ,我正在内存中加载大量文件。每次我运行应用程序时,加载它们都需要一定的时间 有没有办法在两次运行之间将它们保存在内存中 有没有办法在两次运行之间将[加载的文件]保留在内存中 一句话,不 最好的办法是优化加载时间,或者重新构造应用程序,使其不需要加载所有文件 以下是一些建议: 不要将所有数据加载到JVM的内存中,而是将其存储在常规或“nosql”数据库中(磁盘或内存中) 重新构造应用程序/分区以解决问题,这样就不需要同时使用内存中的所有内容 延迟加载文件 通过内存映射缓

我正在使用IntelliJ,我正在内存中加载大量文件。每次我运行应用程序时,加载它们都需要一定的时间

有没有办法在两次运行之间将它们保存在内存中

有没有办法在两次运行之间将[加载的文件]保留在内存中

一句话,不

最好的办法是优化加载时间,或者重新构造应用程序,使其不需要加载所有文件

以下是一些建议:

  • 不要将所有数据加载到JVM的内存中,而是将其存储在常规或“nosql”数据库中(磁盘或内存中)

  • 重新构造应用程序/分区以解决问题,这样就不需要同时使用内存中的所有内容

  • 延迟加载文件

  • 通过内存映射缓冲区访问文件中的信息,避免将其全部转换为堆对象

这些想法都不是直截了当的。我无法预测哪种(如果有的话)会有效。。。没有更多关于你想做什么的信息


1-也就是说,在一个或多个单独的数据库服务器的内存中。当然,当您启动/重新启动内存中的数据库服务器时,它们必须从光盘中加载数据,但您可以让许多应用程序JVM串行或同时与数据库通信

有没有办法在两次运行之间将[加载的文件]保留在内存中

一句话,不

最好的办法是优化加载时间,或者重新构造应用程序,使其不需要加载所有文件

以下是一些建议:

  • 不要将所有数据加载到JVM的内存中,而是将其存储在常规或“nosql”数据库中(磁盘或内存中)

  • 重新构造应用程序/分区以解决问题,这样就不需要同时使用内存中的所有内容

  • 延迟加载文件

  • 通过内存映射缓冲区访问文件中的信息,避免将其全部转换为堆对象

这些想法都不是直截了当的。我无法预测哪种(如果有的话)会有效。。。没有更多关于你想做什么的信息



1-也就是说,在一个或多个单独的数据库服务器的内存中。当然,当您启动/重新启动内存中的数据库服务器时,它们必须从光盘加载数据,但您可以让许多应用程序JVM串行或同时与数据库通信。

一种解决方案是将应用程序重构为两个较小的应用程序,通过环回相互通信。其中一个应用程序负责提供文件,另一个负责使用文件。为文件提供服务的应用程序可以使用字节数组将文件保存在内存缓存中,最高可达一定的内存限制

然后,您可以重新启动使用它们的应用程序,而无需重新启动服务(和缓存)文件的应用程序

您甚至不必将应用程序一分为二<例如,Linux在内存中缓存文件。因此,调整您的文件系统缓存将有帮助,以便尽可能多地将这些文件存储在内存中。< /强>有很多配置选项要考虑。您希望文件在缓存中驻留多长时间?相对于最大缓存大小,文件有多大?以下问题的答案说明了这一点:


可能还需要仔细检查您正在使用的JVM实现,以确保它不会绕过缓存并强制读取硬盘驱动器,尽管我严重怀疑这会发生。

一个解决方案是将应用程序重构为两个较小的应用程序,通过环回相互通信。其中一个应用程序负责提供文件,另一个负责使用文件。为文件提供服务的应用程序可以使用字节数组将文件保存在内存缓存中,最高可达一定的内存限制

然后,您可以重新启动使用它们的应用程序,而无需重新启动服务(和缓存)文件的应用程序

您甚至不必将应用程序一分为二<例如,Linux在内存中缓存文件。因此,调整您的文件系统缓存将有帮助,以便尽可能多地将这些文件存储在内存中。< /强>有很多配置选项要考虑。您希望文件在缓存中驻留多长时间?相对于最大缓存大小,文件有多大?以下问题的答案说明了这一点:


可能还需要仔细检查您正在使用的JVM实现,以确保它不会绕过缓存并强制读取硬盘驱动器,尽管我严重怀疑这种情况是否会发生。

否,但您可以使用一些内存中的数据库来节省您的时间。您能建议这样做吗?否,但是你可以使用一些内存数据库来节省你的时间。你能推荐一个吗?