加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

我应该在使用后重置Java堆空间吗?

发布时间:2020-12-14 05:38:58 所属栏目:Java 来源:网络整理
导读:我正在使用R中的一些建模算法,其中一个在 Java( bartMachine)中运行.我发现在运行建模算法之前,我需要根据数据的大小增加java的最大堆空间. 我这样做是这样的: options(java.parameters =“ – Xmx16g”) 我的问题是,如果没有其他算法将使用java(或至少那么
我正在使用R中的一些建模算法,其中一个在 Java( bartMachine)中运行.我发现在运行建模算法之前,我需要根据数据的大小增加java的最大堆空间.

我这样做是这样的:

options(java.parameters =“ – Xmx16g”)

我的问题是,如果没有其他算法将使用java(或至少那么多堆空间),我是否需要重置堆空间?或者根据需要回收分配给java的内存而不会丢失性能?

我已经搜索了一些关于这个主题的内容,我了解如何更改/降低堆空间.我也明白R / Java会做垃圾收集来从内存中删除旧对象以释放更多空间.

我不明白的是,更改堆空间会如何影响其他程序可用的内存,以及在这种情况下是否有必要甚至是一个好主意来改变使用后的堆大小.

我已经看过的一些答案/资源:

Is there a way to lower Java heap when not in use?

Java garbage collector – When does it collect?

http://www.bramschoenmakers.nl/en/node/726

https://cran.r-project.org/web/packages/bartMachine/bartMachine.pdf

解决方法

它的实现是定义的,取决于由很多参数影响的实现. The garbage collector can affect it.在使用Oracles JVM 1.7的Mac上,默认为并行收集器-XX:UseParallelGC,此收集器不会将内存释放回操作系统.我在Mac上尝试了它并没有释放任何东西,除了使用-XX:UseG1GC.您可以使用以下内容查看默认版本:
java -XX:+PrintGCDetails -XX:+PrintCommandLineFlags -version

如果您使用支持它的JVM和正确的垃圾收集器,可以使用一些参数来调整内存的释放方式,即

-XX:MinHeapFreeRatio (default is 40)
-XX:MaxHeapFreeRatio (default is 70)

但它们被击中和错过(JVM决定何时释放内存,只释放大量对象可能不会触发它).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读