Discussion:
[問題] jar 能否加上類似 Xmx 的參數
(时间太久无法回复)
小安
2006-11-10 07:09:09 UTC
Permalink
最近替案主寫了一個小工具,
為了案主方便,所以我是把程式包成 jar,點兩下就可執行

但是這支程式,需要用到大量的記憶體,
因此,我想請問除了在 console 下 -Xmx 參數外,
有沒有其他的方式能夠設定某 jar 使用的記憶體大小,
例如修改 manifest 之類的?

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.126.173.31
小安
2006-11-10 09:13:28 UTC
Permalink
※ 引述《tkcn (小安)》之銘言:
: 最近替案主寫了一個小工具,
: 為了案主方便,所以我是把程式包成 jar,點兩下就可執行
: 但是這支程式,需要用到大量的記憶體,
: 因此,我想請問除了在 console 下 -Xmx 參數外,
: 有沒有其他的方式能夠設定某 jar 使用的記憶體大小,
: 例如修改 manifest 之類的?

剛剛經由 q 前輩指點,
去試用了 JSmooth 這套軟體 (有名的免費 java to exe 軟體)
其中就有關於 initial memory & maximum memory 的選項了

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.126.173.31
不像我
2006-11-10 09:19:18 UTC
Permalink
※ 引述《tkcn (小安)》之銘言:
: 最近替案主寫了一個小工具,
: 為了案主方便,所以我是把程式包成 jar,點兩下就可執行
: 但是這支程式,需要用到大量的記憶體,
: 因此,我想請問除了在 console 下 -Xmx 參數外,
: 有沒有其他的方式能夠設定某 jar 使用的記憶體大小,
: 例如修改 manifest 之類的?

我的想法很單純!!
如果是windows os就幫他寫個batch檔,抓到JAVA_HOME
直接幫他塞-Xmx, -Xms參數
是Unix like 就寫個shell script :D

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 219.84.3.223
Pao
2006-11-11 01:17:18 UTC
Permalink
※ 引述《tkcn (小安)》之銘言:
: 最近替案主寫了一個小工具,
: 為了案主方便,所以我是把程式包成 jar,點兩下就可執行
: 但是這支程式,需要用到大量的記憶體,
: 因此,我想請問除了在 console 下 -Xmx 參數外,
: 有沒有其他的方式能夠設定某 jar 使用的記憶體大小,
: 例如修改 manifest 之類的?

我的搞笑方法...

Launcher.java :

import java.io.IOException;
public class Launcher
{
public static void main(String[] args) throws IOException
{
Runtime r = Runtime.getRuntime();
System.out.println("Total Memory : " + r.totalMemory());
System.out.println("Max. Memory : " + r.maxMemory());

Launcher.lauch("TestApp");
}
public static void lauch(String className) throws IOException
{
String jre = "\"" + System.getProperty("java.home") + "/bin/java.exe\"";
String para = " -Xms256m -Xmx256m";
String cp = " -classpath \"" + System.getProperty("java.class.path") + "\" ";
Runtime.getRuntime().exec(jre + para + cp + className);
}
}

TestApp.java :

import java.awt.GridLayout;
import javax.swing.JFrame;
import javax.swing.JLabel;
public class TestApp
{
public static void main(String[] args)
{
JFrame f = new JFrame("Test");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setLayout(new GridLayout(2 , 1));
Runtime r = Runtime.getRuntime();
f.add(new JLabel("Total Memory : " + r.totalMemory()));
f.add(new JLabel("Max. Memory : " + r.maxMemory()));
f.pack();
f.setLocationRelativeTo(null);
f.setVisible(true);
}
}

MANIFEST.MF :

Manifest-Version: 1.0
Main-Class: Launcher


嗯嗯...批次檔好像比較簡單...XD



--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.113.171.168
愚人
2006-11-11 01:58:50 UTC
Permalink
※ 引述《pao0111 (Pao)》之銘言:
: ※ 引述《tkcn (小安)》之銘言:
: : 最近替案主寫了一個小工具,
: : 為了案主方便,所以我是把程式包成 jar,點兩下就可執行
: : 但是這支程式,需要用到大量的記憶體,
: : 因此,我想請問除了在 console 下 -Xmx 參數外,
: : 有沒有其他的方式能夠設定某 jar 使用的記憶體大小,
: : 例如修改 manifest 之類的?
: 我的搞笑方法...

搞笑完

還是打個廣告好了

http://jakarta.apache.org/commons/launcher/index.html

The Launcher Component

The Launcher Component is designed to be a cross platform Java application
launcher.

The original Java classes come from the Jakarta Tomcat 4.0 project.

Commons-launcher eliminates the need for a batch or shell script to launch a
Java class. Some situations where elimination of a batch or shell script may
be desirable are:

* You want to avoid having to determining where certain application paths
are e.g. your application's home directory, etc. Determining this dynamically
in a Windows batch scripts is very tricky on some versions of Windows or when
softlinks are used on Unix platforms.
* You want to avoid having to handle native file and path separators or
native path quoting issues.
* You need to enforce certain system properties e.g. java.endorsed.dirs
when running with JDK 1.4.
* You want to allow users to pass in custom JVM arguments or system
properties without having to parse and reorder arguments in your script. This
can be tricky and/or messy in batch and shell scripts.
* You want to bootstrap system properties from a configuration file
instead hard-coding them in your batch and shell scripts.
* You want to provide localized error messages which is very tricky to do
in batch and shell scripts.

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 210.59.94.161

继续阅读narkive:
Loading...