Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1423378
  • 博文数量: 122
  • 博客积分: 340
  • 博客等级: 一等列兵
  • 技术积分: 2967
  • 用 户 组: 普通用户
  • 注册时间: 2009-04-01 11:50
个人简介

说点什么呢

文章分类

全部博文(122)

文章存档

2018年(2)

2017年(1)

2015年(2)

2014年(30)

2013年(81)

2011年(5)

2009年(1)

分类: 系统运维

2013-11-22 13:37:28

jdk参数

(整理时间:2011-07-08)

一、 JVM变量规范

1、 -X开头的选项是非标准的选项(不保证在所有VM上可以得到支持),而且可能在后续版本得到修改;

2、 -XX形式的选项是非稳定的选项JDK官方不推荐使用;

3、 布尔型的选项以-XX:+<选项>的形式打开,而以-XX:-关闭;

4、 数字型的选项是用-XX:的形式来设置,数字可以包括mM表示兆字节大小;

5、 字符串型的选项是以-XX:形式设置,这通常是用来指定一个文件,一个路径或者一个命令列表;

注:

以上内容来自官网:

二、 JVM非标准选项

a) -Xint 表示仅运行在翻译模式下。禁止编译本地代码,所有的代码都是通过翻译执行的;

b) –Xbatch:禁止后台编译。

c) –Xdebug:以支持JVMDI形式启动;

d) –Xbootclasspath:指定一个以逗号分隔的目录列表,用指示启动时搜索JAR ZIP包的路径;

e) –Xbootclasspath/a:指定一个以逗号分隔的目录列表,用以指示添加默认启动class路径的JARZIP包的路径;

f) –Xmsn:指定一个初始分配的内存池大小,这个值必须是比1M1024的倍数的数据,可以在数字后面添加kKmM表示单位。这个选项的默认值是2m

g) Xmx:指定分配的内存池最大值的大小,这个值必须是比2MB1024的倍数的数据。可以在数字后面添加kKmM表示单位。这个选项的默认值是64MB;在linux平台上,这个值的上限值只能设置成大约2G减去系统已经使用的值(注:这个大概是指在32位机上,操作系统只能寻址的范围。因此,如果使用PAE内核,则应该没有这个限制)

h) –Xrs:通过JVM来减少操作系统的信号的使用。其主要作用是在非正常关闭时,让用户能够处理退出程序;

i) Xmn:年青代的堆大小;

注:

以上来自javaman ,这里仅节选

实践证明,像使用Resin这种服务器的Java应用,将Xms 和 Xmx设置成相同的值,可能比较好;

要获得较好的垃圾回收效率,Xmn值应该设置得要比Xmx值小

三、 关于垃圾回收(Garbage Collection : GC)

a) 实质上系统运行两个GC线程,其中一个是轻态的针对年青代(Eden 或者叫 Young)的堆(heap)进行回收;

b) 另一个是完整的GC线程,当没有足够的堆内存时候,它扫描整个堆并将年青代提升为年老代;

c) 如果内存分配不合理或者泄露,最终会导致Full GC频繁的运行。因为这个进程会停止所有服务,所以它将导致服务器对外停止响应;

d) 年青代的堆(Eden heap)的值是通过Xmn来指定的,而Xmx-Xmn就是年老代堆的值。通常不应将Xmn的值指定很大,因为它将让GC花很长的时间进行扫描;

注:

以上内容来自

四、 关于线程的堆大小(Stack size)

1、 每个线程都会在虚拟机(VM)中获取一个堆(stack)。而堆的大小会限制可以建立线程的数量,分配给每个线程的堆的大小超过其需要,将会导致内存溢出错误;

2、 -Xss来设置每个线程堆的大小,如果设置的堆太小,最终也会抛出异常;

3、 有人说,对于Linux操作系统,修改堆的大小,需要在操作系统的层面进行设置。需要调用ulimit 命令,可以将这个命令放在/etc/profiles文件里,随系统启动进调用;

阅读(1642) | 评论(0) | 转发(0) |
0

上一篇:git安装配置

下一篇:Jboss的安装与配置

给主人留下些什么吧!~~