gpt4 book ai didi

gradle - UploadArchives上的Gradle堆错误

转载 作者:行者123 更新时间:2023-12-03 04:46:11 28 4
gpt4 key购买 nike

我正在尝试上传大小为600MB的文件。

我收到此错误:

Execution failed for task ':uploadArchives'.
> Java heap space
...
...
Caused by: java.lang.OutOfMemoryError: Java heap space

我试图设置GRADLE_OPTS,JVM_OPTS和MAVEN_OPTS变量,以设置最大值。堆大小,例如:
export GRADLE_OPTS=-Xmx1024m
gradle uploadArchives

但是我仍然遇到同样的错误。

我在这里想念什么?

最佳答案

最终,无论您在什么平台上运行,都始终可以使用有限的最大堆。在Windows 32位中,这大约为2gb(不是专门用于堆,而是每个进程的内存总量)。碰巧的是,Java恰好使默认值变小了(大概是为了让程序员无法在不遇到此问题且不必仔细检查它们在做什么的情况下创建内存分配失控的程序)。

因此,考虑到这种情况,您可以采用多种方法来确定所需的内存量或减少正在使用的内存量。 Java或C#等垃圾收集语言的一个常见错误是,保留对不再使用的对象的引用,或者在可以重用它们时分配许多对象。只要对象引用了它们,它们将继续使用堆空间,因为垃圾收集器不会删除它们。

在这种情况下,您可以使用Java内存探查器来确定程序中哪些方法正在分配大量对象,然后确定是否有办法确保不再引用它们,或者首先不分配它们。我过去使用的一个选项是“JMP” http://www.khelekore.org/jmp/

如果确定您出于某种原因分配这些对象,并且需要保留引用(取决于实际情况),则仅需要在启动程序时增加最大堆大小。但是,一旦执行了内存分析并了解了对象的分配方式,就应该对所需的内存有一个更好的了解。

通常,如果您不能保证程序将在一定数量的内存中运行(也许取决于输入大小),则总是会遇到此问题。仅在耗尽所有这些之后,您才需要研究将对象缓存到磁盘等中。在这一点上,您应该有一个很好的理由说“我需要Xgb的内存”,并且您无法通过改进来解决它您的算法或内存分配模式。通常,只有在大型数据集(例如数据库或某些科学分析程序)上运行的算法才会出现这种情况,然后诸如缓存和内存映射IO之类的技术就变得有用。

使用命令行选项-Xmx运行Java,该选项设置堆的最大大小。

http://docs.oracle.com/javase/7/docs/technotes/tools/windows/java.html#nonstandard

关于gradle - UploadArchives上的Gradle堆错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18594627/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com