本文目录一览:
- 1、如何查看JVM的系统属性
- 2、JVM环境参数怎么配置?
- 3、怎么查看Java(jvm)虚拟机的大小
- 4、jvm配置文件位置以及文件名是什么?里面可以用 -Dxxxx=xxx 设置参数 用system.getProperty()可以取值
- 5、如何查看JVM的扩展参数
- 6、怎么查看GC 及jvm配置
如何查看JVM的系统属性
一、 原理简介
我们获取jvm系统属性的时候,我们都是通过
System.getProperty(“paramName”),当我们再仔细看下System对象的时候,我们发现还有个getProperties方法。阅读下说明,果然是返回当前JVM的系统属性。
二、 编写JSP
只需要把下面内容拷贝到jsp页面中,并把该jsp放到应用中即可,具体内容如下:
%
/*
列出当前系统中的参数
*/
%
%@ page contentType="text/html;charset=UTF-8" pageEncoding="GBK" errorPage="../include/error.jsp"%
!------- IMPORTS BEGIN ------------
%@ page import="java.util.Properties" %
%@ page import="java.util.Iterator" %
%@ page import="java.util.Map" %
%@ page import="java.util.Map.Entry" %
!------- IMPORTS END ------------
!-- 页面登录信息,常量获取信息--
%!boolean IS_DEBUG = false;%
%
//1.获取参数
//2.权限判断
//3.逻辑操作
//获取当前系统的内存情况
Runtime currRuntime = Runtime.getRuntime();
currRuntime.gc();
long nTotalMemory = currRuntime.totalMemory();
long nFreeMemoy = currRuntime.freeMemory();
//把单位从字节转化为兆
String sSystemTotalMemoy = (nTotalMemory/1024/1024) + "M";
String sFreeSystemMemoy = (nFreeMemoy/1024/1024) + "M";
%
html
head
meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /
title当前系统中的参数/title
style
.td_bg_color{
background-color:#FFFFFF;
}
.td_padding_left{
padding-left:10px;
}
/style
/head
body
table border="0" cellspacing="1" cellpadding="0" width="100%" style="background-color:#d1d6e9;"
tr
td colspan="3"当前系统的中参数列表,即[System.getProperties()]获取的值为/td
/tr
tr
td width="60px"序号/td
td width="300px"名称/td
td值/td
/tr
%
//打印出系统的属性值
int nIndex = 0;
Properties properties = System.getProperties();
if(properties!=null){
Iterator iterator = properties.entrySet().iterator();
while (iterator.hasNext()) {
Map.Entry aEntry = (Entry) iterator.next();
if (aEntry == null) {
continue;
}
nIndex ++;
%
tr
td%=nIndex%/td
td class="9d49-76cf-102a-b2c9 td_bg_color td_padding_left"%=aEntry.getKey()%/td
td class="76cf-102a-b2c9-fba6 td_bg_color td_padding_left"%=aEntry.getValue()%/td
/tr
%
}//end while
}else{//end if
%
tr
td colspan="3"
span style="margin-right:20px;"当前系统对象[System]中没有属性./span
/td
/tr
%
}//end else
%
tr
td%=nIndex++%/td
td class="102a-b2c9-fba6-9547 td_bg_color td_padding_left"总共内存/td
td class="b2c9-fba6-9547-2152 td_bg_color td_padding_left"%=sSystemTotalMemoy%/td
/tr
tr
td%=nIndex++%/td
td class="fba6-9547-2152-3fa7 td_bg_color td_padding_left"空闲内存/td
td class="9547-2152-3fa7-bf29 td_bg_color td_padding_left"%=sFreeSystemMemoy%/td
/tr
/table
/body
/html
JVM环境参数怎么配置?
典型JVM参数设置:
java -Xmx3550m -Xms3550m -Xmn2g -Xss128k
-Xmx3550m:设置JVM最大可用内存为3550M。
-Xms3550m:设置JVM促使内存为3550m。此值可以设置与-Xmx相同,以避免每次垃圾回收完成后JVM重新分配内存。
-Xmn2g:设置年轻代大小为2G。整个堆大小=年轻代大小 + 年老代大小 + 持久代大小。持久代一般固定大小为64m,所以增大年轻代后,将会减小年老代大小。此值对系统性能影响较大,Sun官方推荐配置为整个堆的3/8。
-Xss128k:设置每个线程的堆栈大小。JDK5.0以后每个线程堆栈大小为1M,以前每个线程堆栈大小为256K。更具应用的线程所需内存大小进行调整。在相同物理内存下,减小这个值能生成更多的线程。但是操作系统对一个进程内的线程数还是有限制的,不能无限生成,经验值在3000~5000左右。
java -Xmx3550m -Xms3550m -Xss128k -XX:NewRatio=4 -XX:SurvivorRatio=4 -XX:MaxPermSize=16m -XX:MaxTenuringThreshold=0
-XX:NewRatio=4:设置年轻代(包括Eden和两个Survivor区)与年老代的比值(除去持久代)。设置为4,则年轻代与年老代所占比值为1:4,年轻代占整个堆栈的1/5
-XX:SurvivorRatio=4:设置年轻代中Eden区与Survivor区的大小比值。设置为4,则两个Survivor区与一个Eden区的比值为2:4,一个Survivor区占整个年轻代的1/6
-XX:MaxPermSize=16m:设置持久代大小为16m。
-XX:MaxTenuringThreshold=0:设置垃圾最大年龄。如果设置为0的话,则年轻代对象不经过Survivor区,直接进入年老代。对于年老代比较多的应用,可以提高效率。如果将此值设置为一个较大值,则年轻代对象会在Survivor区进行多次复制,这样可以增加对象再年轻代的存活时间,增加在年轻代即被回收的概论。
怎么查看Java(jvm)虚拟机的大小
由于java应用的允许依赖于JVM(虚拟机),相应的内存配置显然也需要JVM来提供的,准备地说是通过/bin/java.exe的启动命令参数来实现的。具体的配置项如下几种:-XmxJavaHeap最大值(默认值为物理内存的1/4)-XmsJavaHeap初始值-XmnJavaHeapYoung区大小-Xss每个线程的Stack大小拓展,以下是几种使用示例:1、命令下启动应用并配置内存:java-Xmx128m-Xms64mTest2、eclipse内存配置:-vmargs-Xms40m-Xmx512m的配置信息,请自行搜索“jvm内存”。
jvm配置文件位置以及文件名是什么?里面可以用 -Dxxxx=xxx 设置参数 用system.getProperty()可以取值
1
假设你是windows平台,你安装了J2SDK,那么现在你从cmd控制台窗口进入J2SDK安装目录下的bin目录,然后运行java命令,出现如下结果,这些就是包括java.exe工具的和JVM的所有命令都在里面。这里面告诉你可以用 -Dxxxx=xxx 设置参数
即:-Dname=value
set a system property
----------------------
D:\j2sdk15\binjava
Usage: java [-options] class [args...]
(to execute a class)
or java [-options] -jar jarfile [args...]
(to execute a jar file)
where options include:
-client to select the "client" VM
-server to select the "server" VM
-hotspot is a synonym for the "client" VM [deprecated]
The default VM is client.
-cp class search path of directories and zip/jar files
-classpath class search path of directories and zip/jar files
A ; separated list of directories, JAR archives,
and ZIP archives to search for class files.
-Dname=value
set a system property
-verbose[:class|gc|jni]
enable verbose output
-version print product version and exit
-version:value
require the specified version to run
-showversion print product version and continue
-jre-restrict-search | -jre-no-restrict-search
include/exclude user private JREs in the version search
-? -help print this help message
-X print help on non-standard options
-ea[:packagename...|:classname]
-enableassertions[:packagename...|:classname]
enable assertions
-da[:packagename...|:classname]
-disableassertions[:packagename...|:classname]
disable assertions
-esa | -enablesystemassertions
enable system assertions
-dsa | -disablesystemassertions
disable system assertions
-agentlib:libname[=options]
load native agent library libname, e.g. -agentlib:hprof
see also, -agentlib:jdwp=help and -agentlib:hprof=help
-agentpath:pathname[=options]
load native agent library by full pathname
-javaagent:jarpath[=options]
load Java programming language agent, see java.lang.instrument
-----------------------------
在控制台输出信息中,有个-X(注意是大写)的命令,这个正是查看JVM配置参数的命令。
2
用java -X 命令还可以查看JVM的配置说明:
运行后如下结果,这些就是配置JVM参数的秘密武器,这些信息都是英文的,为了方便阅读,我根据自己的理解翻译成中文了(不准确的地方还请各位博友斧正)
--------------------------
D:\j2sdk15\binjava -X
-Xmixed mixed mode execution (default)
-Xint interpreted mode execution only
-Xbootclasspath:directories and zip/jar files separated by ;
set search path for bootstrap classes and resources
-Xbootclasspath/a:directories and zip/jar files separated by ;
append to end of bootstrap class path
-Xbootclasspath/p:directories and zip/jar files separated by ;
prepend in front of bootstrap class path
-Xnoclassgc disable class garbage collection
-Xincgc enable incremental garbage collection
-Xloggc:file log GC status to a file with time stamps
-Xbatch disable background compilation
-Xmssize set initial Java heap size
-Xmxsize set maximum Java heap size
-Xsssize 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.
-----------------------------------------------------------------------
3
JVM配置参数中文说明:
-------------------
1、-Xmixed mixed mode execution (default)
混合模式执行
2、-Xint interpreted mode execution only
解释模式执行
3、-Xbootclasspath:directories and zip/jar files separated by ;
set search path for bootstrap classes and resources
设置zip/jar资源或者类(.class文件)存放目录路径
3、-Xbootclasspath/a:directories and zip/jar files separated by ;
append to end of bootstrap class path
追加zip/jar资源或者类(.class文件)存放目录路径
4、-Xbootclasspath/p:directories and zip/jar files separated by ;
prepend in front of bootstrap class path
预先加载zip/jar资源或者类(.class文件)存放目录路径
5、-Xnoclassgc disable class garbage collection
关闭类垃圾回收功能
6、-Xincgc enable incremental garbage collection
开启类的垃圾回收功能
7、-Xloggc:file log GC status to a file with time stamps
记录垃圾回日志到一个文件。
8、-Xbatch disable background compilation
关闭后台编译
9、-Xmssize set initial Java heap size
设置JVM初始化堆内存大小
10、-Xmxsize set maximum Java heap size
设置JVM最大的堆内存大小
11、-Xsssize 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.
如何查看JVM的扩展参数
一、查看JVM的扩展参数方法:
在java进程后追加-X参数可看到对应的扩展参数,命令:java -X
二、java -X的所有选项:
-Xmixed mixed mode execution (default) 混合模式执行(默认)
-Xint interpreted mode execution on
ly 只在解释模式执行
-Xbootclasspath:directories and zip/jar files separated by ;
set search path for bootstrap classes and resources 设置搜索引导classpath路径和资源路径
-Xbootclasspath/a:directories and zip/jar files separated by ;
append to end of bootstrap class path 追加classpath路径
-Xbootclasspath/p:directories and zip/jar files separated by ;
prepend in front of bootstrap class path 预先加载的classpath路径
-Xnoclassgc disable class garbage collection 关闭垃圾回收机
-Xincgc enable incremental garbage collection 打开垃圾回收机
-Xloggc:file log GC status to a file with time stamps 实时记录垃圾回收机工作
-Xbatch disable background compilation 禁用背景汇编
-Xmssize set initial Java heap size 设置初始Java堆大小
-Xmxsize set maximum Java heap size 设置最大Java堆大小
-Xsssize set java thread stack size 设置Java线程大小
-Xprof output cpu profiling data 输出CPU的分析数据
-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 对JNI执行的额外检查
-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. 使用共享数据
怎么查看GC 及jvm配置
JVisualVM是JDK 6 update 7之后推出的一个工具,它类似于JProfiler的工具,基于此工具可查看内存的消耗情况、线程的执行状况及程序中消耗CPU、内存的动作。