JarBundler 将可执行 jar 打包成 app

来源:互联网 发布:淘宝开店怎么收费标准 编辑:程序博客网 时间:2024/04/18 22:28

操作很简单,很容易就能将 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 的垃圾回收机制所造成——内存使用完毕之后并非马上就回收掉)

[java] view plaincopy
  1. package org.bruce.file.handle.experiment;  
  2.   
  3. /** 
  4.  * @author Bruce Yang 
  5.  * 测试 Java 所能使用的最大堆内存~ 
  6.  */  
  7. public class TestHeapMax {  
  8.     /** 
  9.      * @param args 
  10.      */  
  11.     public static void main(String[] args) {  
  12.         // TODO Auto-generated method stub  
  13.         testHeapMax();  
  14.     }  
  15.       
  16.     @SuppressWarnings("unused")  
  17.     public static void testHeapMax() {  
  18.         int KB = 1024;  
  19.         int MB = KB * 1024;  
  20.         byte[] bytes = null;  
  21.         for(int i = 0; i < 512; ++ i) {  
  22.             System.out.println(i);  
  23.             bytes = new byte[MB *  i];  
  24.         }  
  25.     }  
  26.   
  27. }  
测试方法:

右键 -> Run As -> Run Configuration...,在 “Arguments” 标签页的 “VM arguments” 里面加入 “-Xmx1024M” 参数。

可以自行修改 -Xmx1024M 参数里面的 1024 为其他数值。

我测了一下,

如果不设置 VM arguments 参数的话,以 JVM 所能使用的 64M 默认内存,for 循环仅能打印到 50 多边停下来了。

如果使用  -Xmx256M 的话,能打印的 113

如果使用 -Xmx1024M 的话,打印到 400 多了还没停下来,由于后面的打印速度越来越慢,我就没继续执行下去了..

见下图:

原创粉丝点击