使用 Java.exe 和 Javac.exe 来运行和编译
几个重要的系统参数属性
- java.library.path -- dll库
- java.class.path -- jar和类库
- user.dir -- 启动时的目录
- file.encoding -- file
- java.io.tmpdir -- temp文件
- file.separator -- 文件分隔符
- line.separator -- 换行符
- sun.boot.class.path -- Bootstrap Jar
- java.ext.dirs -- Extension Jar
动态参数:
-D 设置动态参数
例:java -Dxx=yy ClassName //自定义多个参数需要多个 -D
获取:
System.getProperties().getProperty("xx");//yy
注意:像java.library.path这些动态属性,虽然程序启动后可以动态改变,但是没办法改变其达到的功能。只能在程序启动时设置才能加载dll:
java -Djava.library.path=D:\java\dlls MyTestClass
-cp或-classpath 设置类和jar包路径
例:java -cp .;d:\java\jarlib\* TestClass
注意: 在linux系统是用:冒号分割而不是;分号 orz。
.是当前路径*为通配符
内存参数:
-Xmx Java Heap最大值,默认值为物理内存的1/4
-Xms Java Heap初始值,Server端JVM最好将-Xms和-Xmx设为相同值
-Xmn Java Heap Young区大小,不熟悉最好保留默认值;
-Xss 每个线程的Stack大小,不熟悉最好保留默认值;
java -Xmx128m -Xms64m -Xmn32m -Xss16m TestClass
标准参数:
-verbose:class 输出jvm载入类的相关信息
-verbose:gc 输出每次GC的相关情况。
-verbose:jni 输出dll的加载的相关情况
-XX:-UseSerialGC 启动串行gc
-XX:-UseParallelGC 启动并行gc
-XX:NewRatio 新生代内存容量与老生代内存容量的比例
-XX:SurvivorRatio 设置堆内存年轻代中Eden区与Survivor区大小的比值
-XX:MaxPermSize=512M 设置持久代最大值为512M。
-XX:MaxTenuringThreshold=7 表示一个对象如果在救助空间(Survivor区)移动7次还没有被回收就放入年老代。
Jar包的解释
jar包实际就是一个压缩包zip但是此压缩包中必须含有
META-INF文件夹,在文件夹下应该有
- MANIFEST.MF
#可执行jar要有Main-Class
Main-Class: s.NewJFrame
编译和运行jar
- java.library.path -- 指定的是dll等非java库
- java.class.path -- 指定jar库
jvm搜索类的方式和顺序为:Bootstrap,Extension,User。
Bootstrap中的路径是jvm自带的jar或zip文件,
Extension是位于JRE_HOME/lib/ext目录下的jar文件
User搜索可以给定(它有默认值%PATH%)
加载自己需要使用的jar包,需要修改java.class.path,这时需要给java启动添加参数-cp或-classpath
javac -cp .;./mylib.jar s/WTF.java //编译 .表示当前目录
java -cp .;./mylib.jar s.WTF //运行
或者 用*包括所有
java -cp .;./lib/* s.WTF
1.加载DLL
System.load() 参数为库文件的绝对路径
System.loadLibrary()的参数必须是PATH中有的dll
方法1:
一般将dll打包到jar包后,运行时使用classloader把dll资源复制到临时目录:
系统属性java.io.tmpdir获取跟
系统属性file.separator连接后
创建自己的文件夹xxlibxx
再使用System.load()加载即可
方法2:
对于没有打包到Jar包的dll,需要使用java.exe的命令在运行时设置
配置-Djava.library.path
例:
java -Djava.library.path=D:\eclipse\workspace\JniTest\src\jni\;.; s.HelloJni
方法3:
dll直接复制到PATH目录下
再使用System.loadLibrary()加载
..
来源:oschina
链接:https://my.oschina.net/u/3668205/blog/3008475