【问题标题】:Java Heap Space: AppletsJava 堆空间:小程序
【发布时间】:2012-06-27 10:37:10
【问题描述】:

我必须编写一个程序来处理 3000*3000 矩阵。 它只能工作到 600*600。

所以我通过将堆大小增加java -Xms64m -Xmx1024m <class_name> 来运行我的程序 因为最初 OutOfMemoryError 正在发生。 这样就解决了问题。

现在,同样的程序用于在 Applets 中绘制值。 所以我做了一个包并导入它。 但随后出现了同样的错误,因为您无法运行小程序。

您只能输入javac class_name.javaappletviewer class_name.java

所以我无法增加堆大小。 所以我特意放了一个main() 函数...计算要绘制的值(存储在数组中)。

小程序会打印它们。 而且该数组是静态的和全局的。

然后我编译(javac class_name.java)并运行(java -Xms64m -Xmx1024m <class_name>),然后输入appletviewer class_name.java

但是 0,0,0,... 显示出来了。 基本上是int数组的默认值。

好像main() 函数从未运行过。 即使数组是全局的。

最终,我只需要一个main() 函数...以及一些存储值并在输入ppletviewer class_name.java 时保留它们的变量。

有没有办法做到这一点? 或者增加小程序的堆大小?

因为当我在init()paint() 函数中输入逻辑时,会出现同样的错误(OutOfMemoryError

【问题讨论】:

  • 您是否尝试使用“增加小程序堆”进行谷歌搜索?如果你为最终用户这样做对不起你没有办法。您不能强迫用户更改系统设置才能看到您的杰作。
  • 尝试阅读您在此主题上提出的最后一个问题的答案...:P 如果您不阅读它们,那么回答毫无意义。

标签: java applet heap-memory appletviewer


【解决方案1】:

您可以在包含小程序的 HTML 中指定 JVM 参数,例如

<APPLET archive="applet.jar" code="ClassName" width="300" height="300">
    <PARAM name="java_arguments" value="-Xms64m -Xmx1024m">
</APPLET>

Oracle's documentation on applet deployment

【讨论】:

  • 这当然是假设您在浏览器的上下文中运行(而不是 appletviewer)。
  • 不,主要目的不是浏览器,而只是在图表中显示数据。我对java有点新,所以为了清楚起见,上面的代码应该有类名“ClassName”,并保存在一个名为applet.jar的文件中?
猜你喜欢
  • 2011-06-28
  • 2018-02-26
  • 2021-09-09
  • 1970-01-01
  • 1970-01-01
  • 2011-10-27
  • 2014-04-24
  • 2011-01-14
  • 1970-01-01
相关资源
最近更新 更多