簡體   English   中英

設置所有小程序的默認內存限制

[英]Set default memory limit for all applets

簡潔版本

如何配置ubuntu精確的icedtea-plugin軟件包 ,使其默認情況下執行具有特定內存限制的所有小程序? 最好使用命令行工具,並且不使用圖形用戶界面。

長版

我正在使用Java Applet構建信息亭設置,並希望增加所有這些Applet的默認內存限制。 該信息亭基於ubuntu linux,使用icedtea-plugin軟件包作為瀏覽器插件。 由於自助服務亭的構建是自動化且無頭的,因此,如果可能的話,我寧願從命令行進行配置。

到目前為止,這是我發現的內容:

  • 我可能必須指定-Xmx…命令行參數,該參數將在為插件啟動Java虛擬機時使用。
  • 可以使用HTML代碼中的參數,即<param name="java_arguments" value="-Xmx…">來傳遞此類參數。 但這將意味着修改我所有的HTML文件,我寧願避免。 而且我很有可能必須對我的代碼進行簽名才能完成這項工作,這在我項目的其他地方也增加了很多問題。
  • 在使用Oracle VM的桌面系統上,有一個應用程序ControlPanel ,可用來設置這些命令行開關。 似乎配置已寫入文件~/.java/deployment/deployment.properties ,該文件與關鍵的deployment.javaws.jre.0.args相關聯。
  • 文件的規范中未描述該鍵名。 數字0似乎表示一個特定的JVM,如控制面板中表的一行所示。 對於每個JVM,除了此args值外,還有幾個值,它們共享一個共同的索引號。
  • 根據此Wiki部分的介紹 ,IcedTea支持類似的文件,位於~/.icedtea/ 不知道這意味着~/.icedtea/deployment.properties還是~/.icedtea/deployment/deployment.properties IcedTea似乎不帶有ControlPanel

正如你所看到的,有很多提示如何這可能工作,但到目前為止,我還沒有看到任何明確的答案,什么工作 仍有許多懸而未決的問題:

  • 我必須創建此icedtea部署文件嗎?
  • 我是否必須在路徑中包含一個名為deployment的目錄?
  • 為了使此文件按預期工作,我需要指定的最小鍵集是什么?
  • 即使沒有在相應的規范中說明,OpenJDK是否也支持args值?

我想我可以嘗試所有可能的組合以查看其中一種是否有效,但是這樣做將花費大量時間。 所以我在這里問,看看是否有人對此有經驗,並可以提供一個快速的答案。 如果沒有,我想一旦我用困難的方式嘗試過,我最終會回答我自己的問題。

如oracle所說: http : //docs.oracle.com/javase/7/docs/webnotes/tsg/TSG-Desktop/html/plugin.html

應該設置以下環境變量以向applet添加其他參數:

_JPI_VM_OPTIONS=-Xmx…

此外,如轉載網站所述:

請注意,設置環境變量后,需要重新啟動瀏覽器。 如果要在命令外殼程序中設置此環境變量,則必須使用相同的命令外殼程序來啟動瀏覽器,以便瀏覽器繼承環境變量的值。

但是,如果您懷疑如何在ubuntu中設置環境變量,可以參考以下文章: 使$ JAVA_HOME在Ubuntu中容易更改

我只是看了icedtea-web插件的源代碼。 構建命令行的代碼部分似乎根本沒有提供包括自定義參數在內的任何規定,無論其來源如何。 因此,無論我編輯哪個配置文件,HTML文件或環境變量都沒有關系,在那里的代碼將構建相同的命令行來調用java,而無視我的所有想法。

因此,如果所有配置失敗,剩下的就是黑客。 一種方法是修補插件的源代碼,並使其在命令行中包含其他單詞。 對於靜態添加,即單個大小更改,這將非常容易。 更一般的解決方案將包括一些環境變量的內容,就像彼得的答案所暗示的那樣。 這意味着將單詞拆分為所討論的環境變量,並為單詞數組動態分配空間。 在C級別上需要大量工作。

作為一種替代方案,可以在執行的二進制文件級別解決此問題。 該插件顯然已將可執行文件的路徑硬編碼到其中。 在我的情況下,此路徑為/usr/lib/jvm/java-6-openjdk-amd64/jre/bin/java 可以將該二進制文件重命名為java.orig ,並在其位置放置一個shell腳本,內容如下:

#!/bin/bash
for i in "$@"; do
  if [[ "${i}" == sun.applet.PluginMain ]]; then
    exec "$0.orig" -Xmx512m "$@"
  fi
done
exec "$0.orig" "$@"

這種方法的一個后果是ps不再將這些小程序打印為java而是打印為java.orig 在大多數情況下應該不是問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM