java中的jar打包成可执行文件,可以避免在linux中的java程序运行时内存剧增现象


java类打包成.jar可执行文件

原因:
发现在windows中运行好好的java程序,一迁移到linux环境下就发现程序运行时,内存会不断增加,直到被系统killed.所以我排除出内存泄漏这种可能性(因为在windows下好好运行着的),所以我打算试试把java中的类一起打包成.jar可执行文件来 java -jar xx.jar执行看看.果然在linux中进程内存到一定值后,没有继续猛增!
开始:
当然是直接在命令行里面打jar
jar命令格式:jar {c t x u f }[ v m e 0 M i ][-C 目录]文件名... 

其中{ctxu}这四个参数必须选选其一。[v f m e 0 M i ]是可选参数,文件名也是必须的。 

-c 创建一个jar包 
-t 显示jar中的内容列表 
-x 解压jar包 
-u 添加文件到jar包中 
-f 指定jar包的文件名 

-v 生成详细的报造,并输出至标准设备 
-m 指定manifest.mf文件.(manifest.mf文件中可以对jar包及其中的内容作一些一设置) 
-0 产生jar包时不对其中的内容进行压缩处理 
-M 不产生所有文件的清单文件(Manifest.mf)。这个参数与忽略掉-m参数的设置 
-i 为指定的jar文件创建索引文件 
-C 表示转到相应的目录下执行jar命令,相当于cd到那个目录,然后不带-C执行jar命令
接着google到几篇文章
http://java.sun.com/j2se/1.3/docs/guide/jar/jar.html
http://www.diybl.com/course/3_program/java/javajs/2007104/75874.html
http://www-128.ibm.com/developerworks/cn/java/j-jar/index.html
http://wwwhomes.uni-bielefeld.de/tliu1/oldpages/wiki/JarUse.html#sec4
 
我首先是创建了MANIFEST.MF文件
vi MANIFEST.MF
接着编辑了里面的
Main-Class: yourmainclass(无后缀)
Class-Path: xx.jar xxx.jar xxxx.jar(额外包所在路径/)
接着我就打命令:
pwd
/usr/java
ls
org jdk1.5等等文件
jar -cvfm my.jar MANIFEST.MF org/*
再接着就
java -jar my.jar
发现好像还要加 -server参数
java -server -jar my.jar
 
重点在于MANIFEST.MF中的Class-Path
和/etc/profile中的classpath 设置要明确
 

转载地址:http://blog.csdn.net/happychinesenewyear/article/details/2419241

你可能感兴趣的:(Java,java,jar,linux,windows,google,jdk)