【问题标题】:How much of a jar file gets loaded into the memory有多少 jar 文件被加载到内存中
【发布时间】:2019-05-26 06:05:43
【问题描述】:

我正在使用 scala 进行编程,当我编写一个简单的“println(“hello world”)”程序并使用 'sbt package' 将其发布到 jar 文件中时,该文件只有 4kb 大小,但这并没有帮助我因为 jar 文件不会在没有 scala 库的情况下运行。 因此,在网上搜索后,我发现 sbt-assembly 将包括 scala 库在内的所有内容打包到一个“胖 jar”中,但生成的 jar 文件大小超过 13Mb 所以我的问题是,当 jar 文件被执行或访问时,整个 jar 文件是否会加载到内存中,还是只会根据需要将所需的数据和函数加载到内存中?

【问题讨论】:

    标签: scala memory-management jar sbt sbt-assembly


    【解决方案1】:

    此行为不依赖于应用程序的打包方式,而是取决于类加载器(顾名思义)从内存中加载和卸载类。

    默认类加载器的标准行为是在运行时第一次调用类时将其加载到内存中,并且仅当类加载器被垃圾回收时才会卸载。

    当然,你可以定义你的自定义类加载器并做你想做的事情:)

    如果您想在运行时检查加载的类,可以使用VisualVM 之类的工具转储堆并检查内存中发生的情况

    【讨论】:

      猜你喜欢
      • 2014-02-06
      • 2021-06-24
      • 1970-01-01
      • 2011-09-11
      • 2012-04-15
      • 2014-05-15
      • 1970-01-01
      • 2017-01-22
      • 1970-01-01
      相关资源
      最近更新 更多