Java 为所有小程序设置默认内存限制 短版
如何进行配置,使其在默认情况下执行具有特定内存限制的所有小程序?最好使用命令行工具,无图形用户界面 长版本 我正在使用java小程序构建一个信息亭设置,并希望增加所有这些小程序的默认内存限制。该信息亭基于ubuntu linux,用作浏览器插件。由于构建信息亭是自动化和无头的,如果可能的话,我宁愿从命令行进行配置 以下是我目前发现的情况:Java 为所有小程序设置默认内存限制 短版,java,memory,configuration,applet,icedtea,Java,Memory,Configuration,Applet,Icedtea,如何进行配置,使其在默认情况下执行具有特定内存限制的所有小程序?最好使用命令行工具,无图形用户界面 长版本 我正在使用java小程序构建一个信息亭设置,并希望增加所有这些小程序的默认内存限制。该信息亭基于ubuntu linux,用作浏览器插件。由于构建信息亭是自动化和无头的,如果可能的话,我宁愿从命令行进行配置 以下是我目前发现的情况: 我可能必须指定一个-Xmx…命令行参数,该参数将在启动插件的java虚拟机时使用 可以使用HTML代码中的参数传递此类参数,即。 。 但这意味着修改我所有的
- 我可能必须指定一个
命令行参数,该参数将在启动插件的java虚拟机时使用-Xmx…
- 可以使用HTML代码中的参数传递此类参数,即。
。 但这意味着修改我所有的HTML文件,我宁愿避免。我很有可能需要签署我的代码来完成这项工作,这在我的项目的其他地方增加了很多问题 - 在我的桌面系统上,使用Oracle VM,有一个应用程序
,我可以用它来设置这些命令行开关。配置似乎被写入了一个文件ControlPanel
,其中它与键~/.java/deployment/deployment.properties
关联deployment.javaws.jre.0.args
- 中未描述该密钥名称。数字
似乎指的是一个特定的JVM,如控制面板中表格的一行所示。对于每个JVM,除了这个0
值之外,还有几个值,它们都共享一个共同的索引号args
- 根据,IcedTea支持类似的文件,位于
。不确定这是指~/.IcedTea/
还是~/.icedtea/deployment.properties
。IcedTea似乎没有~/.icedtea/deployment/deployment.properties
控制面板
- 我必须创建这个icedtea部署文件吗
- 我是否必须在路径中包含名为
的目录deployment
- 哪一个是我需要指定的使该文件按预期工作的最小密钥集
- OpenJDK是否支持
值,即使相应的规范中没有描述它args
_JPI_VM_OPTIONS=-Xmx…
此外,如参考网站所述:
请注意,设置环境变量后需要重新启动浏览器。如果要在命令shell中设置此环境变量,则必须使用相同的命令shell启动浏览器,以便浏览器继承环境变量的值
然而,如果您怀疑如何在ubuntu中设置环境变量,下面的帖子可能会有所帮助:我刚刚看过icedtea web插件的源代码。似乎根本没有包含自定义参数的规定,无论其来源如何。因此,不管我编辑了哪些配置文件、HTML文件或环境变量,那里的代码都将构建同一个命令行来调用java,而不管我怎么做 因此,如果所有配置都失败,剩下的就是黑客行为。一种方法是修补插件的源代码,并使其在命令行中包含额外的单词。对于静态添加,即单个尺寸更改,这将相当容易。按照这种方式,一个更通用的解决方案将包括一些环境变量的内容。这将意味着对所讨论的环境变量进行单词分割,并动态地为单词数组分配空间。相当多的C级工作 作为替代方案,可以在执行的二进制文件级别解决这个问题。插件显然有硬编码的可执行文件路径。在我的例子中,这个路径是
/usr/lib/jvm/java-6-openjdk-amd64/jre/bin/java
。可以将该二进制文件重命名为java.orig
,并放置一个shell脚本,其中包含以下内容:
#/bin/bash
对于“$@”中的i;做
如果[[“${i}”==sun.applet.PluginMain]];然后
执行官“$0.orig”-Xmx512m“$@”
fi
完成
执行官“$0.orig”“$@”
这种方法的一个结果是,
ps
将不再将这些小程序打印为java
,而是打印为java.orig
。在大多数情况下都不应该是问题。我刚刚尝试过这种方法,但它似乎不起作用:java进程的命令行上没有给定的选项。也许这种方法只适用于Oracle VM,而不适用于IcedTea?翻开openjdk 7u源代码报告,我在任何文件中都找不到您所说的变量名。好的,我没有意识到存在不兼容交叉引用:我刚刚向IcedTea Web bug追踪器提交了一份关于这个问题的报告。我现在已经接受了这个答案,因为它描述了我所理解的当前情况。但是,如果有人有一个非常聪明的方法来包含这个命令行,或者如果上游更改了他们的代码以减少麻烦,那么我很乐意更改被接受的答案。