2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > java设置jvm内存_JVM(java 虚拟机)内存设置

java设置jvm内存_JVM(java 虚拟机)内存设置

时间:2023-07-06 11:43:48

相关推荐

java设置jvm内存_JVM(java 虚拟机)内存设置

一、设置JVM内存设置

1. 设置JVM内存的参数有四个:

-Xmx Java Heap最大值,默认值为物理内存的1/4,最佳设值应该视物理内存大小及计算机内其他内存开销而定;

-Xmx

此设置控制 Java 堆的最大大小。正确调整此参数有助于降低垃圾回收开销,从而缩短服务器响应时间并提

高吞吐量。

对于某些应用程序来说,此选项的缺省设置可能会太低,从而导致发生大量小型垃圾回收。

缺省值: 512 MB

建议值: 随工作负载的不同而有所变化,但高于缺省值。

用法: -Xmx512m 将最大堆大小设置为 512 兆字节

-Xms Java Heap初始值,Server端JVM最好将-Xms和-Xmx设为相同值,开发测试机JVM可以保留默认值;

设置堆大小 下列命令行参数对于设置堆大小来说很有用。

-Xms

此设置控制 Java 堆的初始大小。正确调整此参数有助于降低垃圾回收开销,从而缩短服务器响应时间并提高

吞吐量。

对于某些应用程序来说,此选项的缺省设置可能会太低,从而导致发生大量小型垃圾回收。

缺省值: 256 MB

建议值: 随工作负载的不同而有所变化,但高于缺省值。

用法: -Xms256m 将初始堆大小设置为 256 兆字节

-Xmn Java Heap Young区大小,不熟悉最好保留默认值;

-Xmn

此设置控制允许新生成的对象在堆中耗用的空间量。正确调整此参数有助于降低垃圾回收开销,从而缩短服务

器响应时间并提高吞吐 量。此参数的缺省设置通常过低,这将导致执行大量的小型垃圾回收操作。如果将此参

数设置得过高,可能会导致 JVM 仅执行大型( 全面)垃圾回收。这些垃圾回收操作通常会耗时几秒钟,这将

严重影响服务器的整体性能。您必须保持将此参数设置为小于整个堆大 小的一半,以避免这种情况出现。

缺省值: 2228224 字节

建议值: 大约整个堆大小的 1/4

用法: -Xmn256m 将大小设置为 256 兆字节。

-Xss 每个线程的Stack大小,不熟悉最好保留默认值;

2. 如何设置JVM内存分配:

(1)当在命令提示符下启动并使用JVM时(只对当前运行的类Test生效):

java -Xmx128m -Xms64m -Xmn32m -Xss16m Test

(2)当在集成开发环境下(如eclipse)启动并使用JVM时:

a. 在eclipse根目录下打开eclipse.ini,默认内容为(这里设置的是运行当前开发工具的JVM内存分配):

1.-vmargs 2.-Xms40m 3.-Xmx256m -vmargs表示以下为虚拟机设置参数,可修改其中的参数值,也可添加-Xmn,-Xss,另外,eclipse.ini内还可以设置非堆内存,如:-XX:PermSize=56m,-XX:MaxPermSize=128m。

此处设置的参数值可以通过以下配置在开发工具的状态栏显示:

在eclipse根目录下创建文件options,文件内容为:org.eclipse.ui/perf/showHeapStatus=true

修改eclipse根目录下的eclipse.ini文件,在开头处添加如下内容:

1.-debug 2.options 3.-vm 4.javaw.exe 重新启动eclipse,就可以看到下方状态条多了JVM信息。

b. 打开eclipse-窗口-首选项-Java-已安装的JRE(对在当前开发环境中运行的java程序皆生效)

编辑当前使用的JRE,在缺省VM参数中输入:-Xmx128m -Xms64m -Xmn32m -Xss16m

c. 打开eclipse-运行-运行-Java应用程序(只对所设置的java类生效)

选定需设置内存分配的类-自变量,在VM自变量中输入:-Xmx128m -Xms64m -Xmn32m -Xss16m

注:如果在同一开发环境中同时进行了b和c设置,则b设置生效,c设置无效,如:

开发环境的设置为:-Xmx256m,而类Test的设置为:-Xmx128m -Xms64m,则运行Test时生效的设置为:

-Xmx256m -Xms64m

(3)当在服务器环境下(如Tomcat)启动并使用JVM时(对当前服务器环境下所以Java程序生效):

a. 设置环境变量:

变量名:CATALINA_OPTS

变量值:-Xmx128m -Xms64m -Xmn32m -Xss16m

b. 打开Tomcat根目录下的bin文件夹,编辑catalina.bat,将其中的%CATALINA_OPTS%(共有四处)替换为:-Xmx128m -Xms64m -Xmn32m -Xss16m

二、查看设置JVM内存信息

Runtime.getRuntime().maxMemory(); //最大可用内存,对应-Xmx

Runtime.getRuntime().freeMemory(); //当前JVM空闲内存

Runtime.getRuntime().totalMemory(); //当前JVM占用的内存总数,其值相当于当前JVM已使用的内存及freeMemory()的总和

关于maxMemory(),freeMemory()和totalMemory():

maxMemory()为JVM的最大可用内存,可通过-Xmx设置,默认值为物理内存的1/4,设值不能高于计算机物理内存;

totalMemory()为当前JVM占用的内存总数,其值相当于当前JVM已使用的内存及freeMemory()的总和,会随着JVM使用内存的增加而增加;

freeMemory()为当前JVM空闲内存,因为JVM只有在需要内存时才占用物理内存使用,所以freeMemory()的值一般情况下都很小,而JVM实际可用内存并不等于freeMemory(),而应该等于maxMemory()-totalMemory()+freeMemory()。及其设置JVM内存分配。

或者,用java -X 命令查看JVM的配置说明:

运行后如下结果,这些就是配置JVM参数的秘密武器,这些信息都是英文的,为了方便阅读,我根据自己的理解翻译成中文了(不准确的地方还请各位博友斧正)

-----------------------------------------------------------------------

D:\j2sdk15\bin>java -X

-Xmixed mixed mode execution (default)

-Xint interpreted mode execution only

-Xbootclasspath:

set search path for bootstrap classes and resources

-Xbootclasspath/a:

append to end of bootstrap class path

-Xbootclasspath/p:

prepend in front of bootstrap class path

-Xnoclassgc disable class garbage collection

-Xincgc enable incremental garbage collection

-Xloggc: log GC status to a file with time stamps

-Xbatch disable background compilation

-Xms set initial Java heap size

-Xmx set maximum Java heap size

-Xss set java thread stack size

-Xprof output cpu profiling data

-Xfuture enable strictest checks, anticipating future default

-Xrs reduce use of OS signals by Java/VM (see documentation)

-Xcheck:jni perform additional checks for JNI functions

-Xshare:off do not attempt to use shared class data

-Xshare:auto use shared class data if possible (default)

-Xshare:on require using shared class data, otherwise fail.

The -X options are non-standard and subject to change without notice.

-----------------------------------------------------------------------

JVM配置参数中文说明:

-----------------------------------------------------------------------

1、-Xmixed mixed mode execution (default)

混合模式执行

2、-Xint interpreted mode execution only

解释模式执行

3、-Xbootclasspath:

set search path for bootstrap classes and resources

设置zip/jar资源或者类(.class文件)存放目录路径

3、-Xbootclasspath/a:

append to end of bootstrap class path

追加zip/jar资源或者类(.class文件)存放目录路径

4、-Xbootclasspath/p:

prepend in front of bootstrap class path

预先加载zip/jar资源或者类(.class文件)存放目录路径

5、-Xnoclassgc disable class garbage collection

关闭类垃圾回收功能

6、-Xincgc enable incremental garbage collection

开启类的垃圾回收功能

7、-Xloggc: log GC status to a file with time stamps

记录垃圾回日志到一个文件。

8、-Xbatch disable background compilation

关闭后台编译

9、-Xms set initial Java heap size

设置JVM初始化堆内存大小

10、-Xmx set maximum Java heap size

设置JVM最大的堆内存大小

11、-Xss set java thread stack size

设置JVM栈内存大小

12、-Xprof output cpu profiling data

输入CPU概要表数据

13、-Xfuture enable strictest checks, anticipating future default

执行严格的代码检查,预测可能出现的情况

14、-Xrs reduce use of OS signals by Java/VM (see documentation)

通过JVM还原操作系统信号

15、-Xcheck:jni perform additional checks for JNI functions

对JNI函数执行检查

16、-Xshare:off do not attempt to use shared class data

尽可能不去使用共享类的数据

17、-Xshare:auto use shared class data if possible (default)

尽可能的使用共享类的数据

18、-Xshare:on require using shared class data, otherwise fail.

尽可能的使用共享类的数据,否则运行失败

The -X options are non-standard and subject to change without notice.

-----------------------------------------------------------------------

怎么用这这些参数呢?其实所有的命令行都是这么一用,下面我就给出一个最简单的HelloWorl的例子来演示这个参数的用法,非常的简单。

HelloWorld.java

-----------------------------------------------

public class HelloWorld

{

public static void main(String[] args)

{

System.out.println("Hello World!");

}

}

编译并运行:

D:\j2sdk15\bin>javac HelloWorld.java

D:\j2sdk15\bin>java -Xms256M -Xmx512M HelloWorld

Hello World!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。