操作很简单,很容易就能将 jar 打包成 app 文件。
开始我还想用 JarBundler 将 jar 打包成 app 来达到加密的目的,
没想到 show Package contents 一看,nnd 这app还是比较坑爹,只是简简单单的封装了一层么。
话说被打包成 app 文件的那个 jar 包竟然还安安静静地躺在 app 的里面。。。。
不过,打包成 app 文件了之后还是有一些好处的:
如果说该可执行 jar 文件经常要用来处理一些比较大的文件,
而且用的还是那种一次性加载到内存、吃内存量比较大的操作,
那么很有可能,JVM 默认尺寸的内存会被消耗殆尽从而导致报错
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
单凭 jar 文件,是没法在里面包含传递给 JVM 的参数的。
这时候 JarBundler 的用处就体现出来了,设置一下执行 JVM 的参数即可解决这个问题。
给一个测试JVM 所能使用内存大小的测试类
(有点儿不准确,可能是由 Java 的垃圾回收机制所造成——内存使用完毕之后并非马上就回收掉)
- package org.bruce.file.handle.experiment;
- /**
- * @author Bruce Yang
- * 测试 Java 所能使用的最大堆内存~
- */
- public class TestHeapMax {
- /**
- * @param args
- */
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- testHeapMax();
- }
- @SuppressWarnings("unused")
- public static void testHeapMax() {
- int KB = 1024;
- int MB = KB * 1024;
- byte[] bytes = null;
- for(int i = 0; i < 512; ++ i) {
- System.out.println(i);
- bytes = new byte[MB * i];
- }
- }
- }
右键 -> Run As -> Run Configuration...,在 “Arguments” 标签页的 “VM arguments” 里面加入 “-Xmx1024M” 参数。
可以自行修改 -Xmx1024M 参数里面的 1024 为其他数值。
我测了一下,
如果不设置 VM arguments 参数的话,以 JVM 所能使用的 64M 默认内存,for 循环仅能打印到 50 多边停下来了。
如果使用 -Xmx256M 的话,能打印的 113
如果使用 -Xmx1024M 的话,打印到 400 多了还没停下来,由于后面的打印速度越来越慢,我就没继续执行下去了..
见下图: