精华内容
下载资源
问答
  • Java 参数列表

    2012-09-11 16:38:07
    下面的讨论以Windows平台的Sun MicroSystem实现的java5虚拟机为蓝本,其他操作系统或其他公司实现的虚拟机参数会有部分不同,但大部分含义都和Windows上的类似。Java5与以前版本相比,虚拟机参数大部分保持了向前...
    
    

    下面的讨论以Windows平台的Sun MicroSystem实现的java5虚拟机为蓝本,其他操作系统或其他公司实现的虚拟机参数会有部分不同,但大部分含义都和Windows上的类似。Java5与以前版本相比,虚拟机参数大部分保持了向前兼容,同时也增加了一些新的参数,本文将对这些参数的作用作详细描述,使虚拟机能更符合运行环境的需要,获得更好的性能和稳定性。

    Java在运行已编译完成的类时,是通过java虚拟机来装载和执行的,java虚拟机通过操作系统命令JAVA_HOME\bin\java –option 来启动,-option为虚拟机参数,JAVA_HOME为JDK安装路径,通过这些参数可对虚拟机的运行状态进行调整,掌握参数的含义可对虚拟机的运行模式有更深入理解。


    虚拟机参数分为基本和扩展两类,在命令行中输入JAVA_HOME\bin\java 就可得到基本参数列表,

    在命令行输入JAVA_HOME\bin\java –X 就可得到扩展参数列表。

    基本参数说明:

    -client,-server

    这两个参数用于设置虚拟机使用何种运行模式,client模式启动比较快,但运行时性能和内存管理效率不如server模式,通常用于客户端应用程序。相反,server模式启动比client慢,但可获得更高的运行性能。

    在windows上,缺省的虚拟机类型为client模式,如果要使用server模式,就需要在启动虚拟机时加-server参数,以获得更高性能,对服务器端应用,推荐采用server模式,尤其是多个CPU的系统。在Linux,Solaris上缺省采用server模式。

    -hotspot

    含义与client相同,jdk1.4以前使用的参数,jdk1.4开始不再使用,代之以client。

    -classpath,-cp

    虚拟机在运行一个类时,需要将其装入内存,虚拟机搜索类的方式和顺序如下:

    Bootstrap classes,Extension classes,User classes。

    Bootstrap 中的路径是虚拟机自带的jar或zip文件,虚拟机首先搜索这些包文件,用System.getProperty("sun.boot.class.path")可得到虚拟机搜索的包名。

    Extension是位于jre\lib\ext目录下的jar文件,虚拟机在搜索完Bootstrap后就搜索该目录下的jar文件。用System. getProperty("java.ext.dirs”)可得到虚拟机使用Extension搜索路径。

    User classes搜索顺序为当前目录、环境变量 CLASSPATH、-classpath。

    -classpath告知虚拟机搜索目录名、jar文档名、zip文档名,之间用分号;分隔。

    例如当你自己开发了公共类并包装成一个common.jar包,在使用common.jar中的类时,就需要用-classpath common.jar 告诉虚拟机从common.jar中查找该类,否则虚拟机就会抛出java.lang.NoClassDefFoundError异常,表明未找到类定义。

    在运行时可用System.getProperty(“java.class.path”)得到虚拟机查找类的路径。


    使用-classpath后虚拟机将不再使用CLASSPATH中的类搜索路径,如果-classpath和CLASSPATH都没有设置,则虚拟机使用当前路径(.)作为类搜索路径。


    推荐使用-classpath来定义虚拟机要搜索的类路径,而不要使用环境变量CLASSPATH的搜索路径,以减少多个项目同时使用CLASSPATH时存在的潜在冲突。例如应用1要使用a1.0.jar中的类G,应用2要使用a2.0.jar中的类G,a2.0.jar是a1.0.jar的升级包,当a1.0.jar,a2.0.jar都在CLASSPATH中,虚拟机搜索到第一个包中的类G时就停止搜索,如果应用1应用2的虚拟机都从CLASSPATH中搜索,就会有一个应用得不到正确版本的类G。

    -D<propertyName>=value

    在虚拟机的系统属性中设置属性名/值对,运行在此虚拟机之上的应用程序可用System.getProperty(“propertyName”)得到value的值。

    如果value中有空格,则需要用双引号将该值括起来,如-Dname=”space string”。

    该参数通常用于设置系统级全局变量值,如配置文件路径,应为该属性在程序中任何地方都可访问。


    -verbose[:class|gc|jni]

    在输出设备上显示虚拟机运行信息。

    verbose和verbose:class含义相同,输出虚拟机装入的类的信息,显示的信息格式如下:

    [Loaded java.io.FilePermission$1 from shared objects file]

    当虚拟机报告类找不到或类冲突时可用此参数来诊断来查看虚拟机从装入类的情况。


    -verbose:gc在虚拟机发生内存回收时在输出设备显示信息,格式如下:

    [Full GC 268K->168K(1984K), 0.0187390 secs]

    该参数用来监视虚拟机内存回收的情况。


    -verbose:jni在虚拟机调用native方法时输出设备显示信息,格式如下:

    [Dynamic-linking native method HelloNative.sum ... JNI]

    该参数用来监视虚拟机调用本地方法的情况,在发生jni错误时可为诊断提供便利。



    -version

    显示可运行的虚拟机版本信息然后退出。一台机器上装有不同版本的JDK时



    -showversion

    显示版本信息以及帮助信息。



    -ea[:<packagename>...|:<classname>]

    -enableassertions[:<packagename>...|:<classname>]

    从JDK1.4开始,java可支持断言机制,用于诊断运行时问题。通常在测试阶段使断言有效,在正式运行时不需要运行断言。断言后的表达式的值是一个逻辑值,为true时断言不运行,为false时断言运行,抛出java.lang.AssertionError错误。

    上述参数就用来设置虚拟机是否启动断言机制,缺省时虚拟机关闭断言机制,用-ea可打开断言机制,不加<packagename>和classname时运行所有包和类中的断言,如果希望只运行某些包或类中的断言,可将包名或类名加到-ea之后。例如要启动包com.foo.util中的断言,可用命令 –ea:com.foo.util 。


    -da[:<packagename>...|:<classname>]

    -disableassertions[:<packagename>...|:<classname>]

    用来设置虚拟机关闭断言处理,packagename和classname的使用方法和-ea相同。



    -esa | -enablesystemassertions

    设置虚拟机显示系统类的断言。


    -dsa | -disablesystemassertions

    设置虚拟机关闭系统类的断言。


    -agentlib:<libname>[=<options>]

    该参数是JDK5新引入的,用于虚拟机装载本地代理库。

    Libname为本地代理库文件名,虚拟机的搜索路径为环境变量PATH中的路径,options为传给本地库启动时的参数,多个参数之间用逗号分隔。在Windows平台上虚拟机搜索本地库名为libname.dll的文件,在Unix上虚拟机搜索本地库名为libname.so的文件,搜索路径环境变量在不同系统上有所不同,Linux、SunOS、IRIX上为LD_LIBRARY_PATH,AIX上为LIBPATH,HP-UX上为SHLIB_PATH。


    例如可使用-agentlib:hprof来获取虚拟机的运行情况,包括CPU、内存、线程等的运行数据,并可输出到指定文件中,可用-agentlib:hprof=help来得到使用帮助列表。在jre\bin目录下可发现hprof.dll文件。


    -agentpath:<pathname>[=<options>]

    设置虚拟机按全路径装载本地库,不再搜索PATH中的路径。其他功能和agentlib相同。



    -javaagent:<jarpath>[=<options>]

    虚拟机启动时装入java语言设备代理。Jarpath文件中的mainfest文件必须有Agent-Class属性。代理类要实现public static void premain(String agentArgs, Instrumentation inst)方法。当虚拟机初始化时,将按代理类的说明顺序调用premain方法。

    参见:java.lang.instrument



    扩展参数说明


    -Xmixed

    设置-client模式虚拟机对使用频率高的方式进行Just-In-Time编译和执行,对其他方法使用解释方式执行。该方式是虚拟机缺省模式。



    -Xint

    设置-client模式下运行的虚拟机以解释方式执行类的字节码,不将字节码编译为本机码。


    -Xbootclasspath:path

    -Xbootclasspath/a:path

    -Xbootclasspath/p:path


    改变虚拟机装载缺省系统运行包rt.jar而从-Xbootclasspath中设定的搜索路径中装载系统运行类。除非你自己能写一个运行时,否则不会用到该参数。

    /a:将在缺省搜索路径后加上path 中的搜索路径。

    /p:在缺省搜索路径前先搜索path中的搜索路径。


    -Xnoclassgc

    关闭虚拟机对class的垃圾回收功能。


    -Xincgc

    启动增量垃圾收集器,缺省是关闭的。增量垃圾收集器能减少偶然发生的长时间的垃圾回收造成的暂停时间。但增量垃圾收集器和应用程序并发执行,因此会占用部分CPU在应用程序上的功能。


    -Xloggc:<file>

    将虚拟机每次垃圾回收的信息写到日志文件中,文件名由file指定,文件格式是平文件,内容和-verbose:gc输出内容相同。

    -Xbatch

    虚拟机的缺省运行方式是在后台编译类代码,然后在前台执行代码,使用-Xbatch参数将关闭虚拟机后台编译,在前台编译完成后再执行。

    -Xms<size>

    设置虚拟机可用内存堆的初始大小,缺省单位为字节,该大小为1024的整数倍并且要大于1MB,可用k(K)或m(M)为单位来设置较大的内存数。初始堆大小为2MB。

    例如:-Xms6400K,-Xms256M

    -Xmx<size>

    设置虚拟机内存堆的最大可用大小,缺省单位为字节。该值必须为1024整数倍,并且要大于2MB。可用k(K)或m(M)为单位来设置较大的内存数。缺省堆最大值为64MB。

    例如:-Xmx81920K,-Xmx80M

    当应用程序申请了大内存运行时虚拟机抛出java.lang.OutOfMemoryError: Java heap space错误,就需要使用-Xmx设置较大的可用内存堆。

    -Xss<size>

    设置线程栈的大小,缺省单位为字节。与-Xmx类似,也可用K或M来设置较大的值。通常操作系统分配给线程栈的缺省大小为1MB。

    另外也可在java中创建线程对象时设置栈的大小,构造函数原型为Thread(ThreadGroup group, Runnable target, String name, long stackSize)。

    -Xprof

    输出CPU运行时的诊断信息。

    -Xfuture

    对类文件进行严格格式检查,以保证类代码符合类代码规范。为保持向后兼容,虚拟机缺省不进行严格的格式检查。

    -Xrs

    减少虚拟机中操作系统的信号(singals)的使用。该参数通常用在虚拟机以后台服务方式运行时使用(如Servlet)。

    -Xcheck:jni

    调用JNI函数时进行附加的检查,特别地虚拟机将校验传递给JNI函数参数的合法性,在本地代码中遇到非法数据时,虚拟机将报一个致命错误而终止。使用该参数后将造成性能下降。

    展开全文
  • 背景:我们在进行性能测试时,需要构造测试数据,即参数化文件,如下:上面的文件内容,我们可以通过Java代码轻松实现,主要代码解释:All 代码(其实我也看不懂,但是会改就行啦)package file;import java.io.File;...

    背景:我们在进行性能测试时,需要构造测试数据,即参数化文件,如下:

    64896050c31ddf8204fbc1fb1c93492e.png

    上面的文件内容,我们可以通过Java代码轻松实现,主要代码解释:

    8f49b17fecb27b434db7c3d40e5d764b.png

    All 代码(其实我也看不懂,但是会改就行啦)

    package file;

    import java.io.File;

    import java.io.FileOutputStream;

    import java.io.IOException;

    import java.io.OutputStreamWriter;

    public class FileWrite {

    public static void main(String[] args) {

    String filepath= "C:\\Users\\lixiaojuan\\Desktop\\lr\\末班\\test2.txt";

    checkFile(filepath);

    writeContent("name,pwd,salt\n",filepath,true);

    for(int i=1;i<=50;i++){

    System.out.println("add ---------"+i);

    writeContent("test"+i+"@bbs-step.com,123456,e10adc39749ba59abbe56e057f20f883e"+"\n",filepath,true);

    }

    }

    /**

    * 写入内容到文件

    *

    * @param number

    * @param filename

    * @return

    */

    public static boolean writeContent(String c, String path, boolean isAppend) {

    File f = new File(path);

    try {

    FileOutputStream fos = new FileOutputStream(path, isAppend);

    OutputStreamWriter writer = new OutputStreamWriter(fos, "UTF-8");

    writer.write(c);

    writer.close();

    fos.close();

    } catch (IOException e) {

    e.printStackTrace();

    return false;

    }

    return true;

    }

    public static void checkFile(String filepath) {

    File f = new File(filepath);

    if (!f.exists()) {

    try {

    f.createNewFile();

    } catch (IOException e) {

    e.printStackTrace();

    }

    return;

    } else {

    f.delete();

    try {

    f.createNewFile();

    } catch (IOException e) {

    e.printStackTrace();

    }

    }

    }

    }

    展开全文
  • Java可变参数列表详解1、接受的传入参数情况:如public void test(String ...args){...}1)不使用参数,如test()2)使用一个或多个参数,如test("1"); test("1","2");3)使用数组 test(new String[]{"1","2"});2、方法...

    Java可变参数列表详解

    1、接受的传入参数情况:

    如public void test(String ...args){...}

    1)不使用参数,如test()

    2)使用一个或多个参数,如test("1"); test("1","2");

    3)使用数组 test(new String[]{"1","2"});

    2、方法内部访问参数:

    在test方法内部,我们可以像使用数组的访问方式一样来访问参数args.如:args[i]

    3、编译器原理

    编译器编译test(String ...args){...} 编译成为数组调用的方式test(String[] args){}

    4、注意事项

    如果同时同一个类中还有一个test方法,例如test(String args) ,我们采用 test("1")的方式调用,我们就可以知道了,因为有这个方法存在,所以编译器就会优先使用这个 test(String args)    方法,而不会使用不定参数的方法,这个原因很明确,因为不定参数本质上是一个数组为参数的方式。

    所以,如果你定义了一个不定参数的test方法,如果你再定义一个test(String[] args)的以数组为参数的方法,编译器就会提示你方法定义重复。

    感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

    展开全文
  • Java可变参数列表详解1、接受的传入参数情况:如public void test(String ...args){...}1)不使用参数,如test()2)使用一个或多个参数,如test("1"); test("1","2");3)使用数组 test(new String[]{"1","2"});2、方法...

    Java可变参数列表详解

    1、接受的传入参数情况:

    如public void test(String ...args){...}

    1)不使用参数,如test()

    2)使用一个或多个参数,如test("1"); test("1","2");

    3)使用数组 test(new String[]{"1","2"});

    2、方法内部访问参数:

    在test方法内部,我们可以像使用数组的访问方式一样来访问参数args.如:args[i]

    3、编译器原理

    编译器编译test(String ...args){...} 编译成为数组调用的方式test(String[] args){}

    4、注意事项

    如果同时同一个类中还有一个test方法,例如test(String args) ,我们采用 test("1")的方式调用,我们就可以知道了,因为有这个方法存在,所以编译器就会优先使用这个 test(String args)    方法,而不会使用不定参数的方法,这个原因很明确,因为不定参数本质上是一个数组为参数的方式。

    所以,如果你定义了一个不定参数的test方法,如果你再定义一个test(String[] args)的以数组为参数的方法,编译器就会提示你方法定义重复。

    感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

    展开全文
  • java中传的参数是stack上复制的值,如果传的是object,那么传的是该object的一个拷贝引用。Java对象及其引用关于对象与引用之间的一些基本概念。初学Java时,在很长一段时间里,总觉得基本概念很模糊。后来才知道,...
  • import java.awt.List;import java.awt.image.BufferedImage;import java.io.BufferedReader;import java.io.ByteArrayOutputStream;import java.io.File;import java.io.InputStreamReader;import java.util.ArrayL...
  • } } 我的Java有点生锈,因此代码可能有缺陷.不过,总体思路应该可行. 用法: // This is defined somewhere. It could be a local variable or an instance // field or whatever. There's no exception (except is ...
  • class Value{ public int i=15; } public class Test{ public static void main(String argv[]){ Test t=new Test( ); t.first( ); } public void first( ){ int i=5; Value v=new Value( );... System.
  • Java SE5添加了可变参数列表特性参数可以这样定义,(Object…args)。可变参数用"..."来定义,args是可变参数的数组。举个例子:package sample;class A{}public class NewVarArgs {static void printArray(Object......
  • 关于java的可变参数列表1.简介:java的可变参数列表是的从jdk1.5开始新增的,其英文名词varargs2.作用可以传未知个数的参数,无需手动将参数列表装入数组3.语法//可变参数列表的varname被编译后其实是一个数组来的...
  • 展开全部你的encrypt方法有错误,e69da5e887aa62616964757a686964616f31333337616463你需要在...不然你这个加密方法始终会返回一个empty string我给下代码和运行结果,importjava.util.Scanner;publicclassEncryptT...
  • 我们在对可变参数有一定的认识后,可以引申一下它的使用范围。...1.可变参数列表概念从java5开始,java支持一种参数写法:Java类型后面三个点(如String…),叫可变参数列表。向其中传入参数时,它支持传入...
  • publicclassSector{publicstaticfinalintMAX_OCCUPANTS=8;privatePositionposition;privateArrayListoccupants;... } } } 形式参数列表和实际参数列表长度不同,需要position,occupant。找到position。为什么啊? 展开
  • 可变参数列表1.1 使用Object数组参数import java.util.*;class A {}public class VarArgs {static void printArray(Object[] args) {for(Object obj : args) {System.out.println(obj + " ");}System.out....
  • ^ 需要: 没有参数 找到: String 原因: 实际参数列表和形式参数列表长度不同 解决方案:60分 这个“public void Test(String dt) throws IOException”只是Test类中的一个方法,不是构造函数。 正确的调用...
  • 下面我们就可变参数列表填充数组的方法进行简单说明,然后带来代码的实例讲解。1、说明使用可变参数列表,不用再显示地编写数组语法,编译器会去填充数组。可以应用于参数个数或类型未知的场合。2、实例当方法参数为...
  • 我有一个方法:invokList(List list);...想法是将列表拆分为多个列表,然后并行执行invokList。我做了这个例子:import java.util.Arrays;import java.util.Collections;import java.util.List;publ...
  • Java可变参数列表详解

    2020-08-30 13:05:18
    主要介绍了Java可变参数列表详解的相关资料,需要的朋友可以参考下
  • 该楼层疑似违规已被系统折叠隐藏此楼查看此楼import java.util.Scanner;public class TestDemo{public static void main(String[] args){System.out.println("请输入要转换的金额:");Scanner s = new Scanner...
  • 通过Java构造参数列表

    2017-08-24 15:04:00
    通过Java构造参数列表 背景:我们在进行性能测试时,需要构造测试数据,即参数化文件,如下: 上面的文件内容,我们可以通过Java代码轻松实现,主要代码解释: All 代码(其实我也看不懂,但是...
  • java方法参数列表

    2019-08-11 09:43:16
    #Thinking in Java ##Java对象传值TOC 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本...
  • 关于java的可变参数列表1.简介:java的可变参数列表是的从jdk1.5开始新增的,其英文名词varargs2.作用可以传未知个数的参数,无需手动将参数列表装入数组3.语法//可变参数列表的varname被编译后其实是一个数组来的...
  • 项目需要,想根据SpringMvc的传入地址做二次反射跳转,用java.lang.reflect包的反射机制找不到参数的具体名称,找到了@MikanMu大神的代码,稍微改造了一下,记起来以作备忘。通过ASM来读取:需要引入相应的jar包.pom...
  • java 方法重载 参数列表不同
  • importjava.lang.Math;classCylinder{publicdoubleradius,height;publicCylinder(doubleradius,doubleheight){this.radius=radius;this.height=height;}doublesuperficialarea(){retu...import java.lang.Math;class...
  • Java 可变参数列表

    2019-12-04 21:55:41
    可变长度参数列表是从Java 5开始,Java语言对方法参数支持一种新写法,在方法定义中可以使用个数不确定的参数,其语法就是类型后跟…。 在具有可变长参数的方法中可以把参数当成数组使用,例如可以循环输出所有的...
  • JAVA方法的参数列表

    2019-09-28 21:04:53
    方法的参数列表指定要传递给方法什么样的信息。正如你可能料想的那样,这些信息像java中的其他信息一样,采用的都是对象形式。因此,在参数列表中必须指定每个所传递对象的类型及名字。像Java中如何传递对象的场合...
  • Java1.5增加了新特性:可变参数:适用于参数个数不确定,类型确定的情况,java把可变参数当做数组处理。注意:可变参数必须位于最后一项。当可变参数个数多于一个时,...可变参数的特点:(1)只能出现在参数列表的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 12,862
精华内容 5,144
关键字:

java参数列表

java 订阅