最新范文 方案 计划 总结 报告 体会 事迹 讲话 倡议书 反思 制度 入党

Java中方法参数的一些总结

日期:2020-06-27  类别:最新范文  编辑:一流范文网  【下载本文Word版

Java中方法参数的一些总结 本文关键词:参数,方法,Java

Java中方法参数的一些总结 本文简介:Java中方法参数的一些总结在学习编程的过程中,我觉得不止要获得课本的知识,更多的是通过学习技术知识提高解决问题的能力,这样我们才能走在最前方,更多Java学习,请搜索疯狂Java;Java程序设计语言使用值调用。也就是说,方法得到的是所有参数值的一个拷贝,特别是,方法不能修改传递给它的任何基本数据

Java中方法参数的一些总结 本文内容:

Java中方法参数的一些总结

在学习编程的过程中,我觉得不止要获得课本的知识,更多的是通过学习技术知识提高解决问题

的能力,这样我们才能走在最前方,更多Java学习,请搜索疯狂Java;

Java程序设计语言使用值调用。也就是说,方法得到的是所有参数值的一个拷贝,特别是,方法

不能修改传递给它的任何基本数据类

方法参数共有两种类型:

1、基本数据类型(数字、布尔值)。

2、对象引用。

一个方法不可能修改一个基本数据类型的参数。而对象引用作为参数就不同了,对象参数所

引用的对象状态是可以被改变的,因为方法

得到的是对象引用的拷贝,对象引用及其他的拷贝同时引用同一个对象。

Java程序设计语言对对象采用的不是引用调用,实际上,对象引用进行的是值传递。

总结Java程序设计语言中,方法参数的使用情况:

1、一个方法不能修改一个基本数据类型的参数(即数值开和布尔值)。

2、一个方法可以改变一个对象参数的状态。

3、一个方法对象参数引用一个新的对象不改变方法外对象的值。

package

com.action;

public

class

Test

{

private

static

int

i

=

1;

private

static

String

s

=

“string1“;

private

static

String[]

ss

=

{

“11“,“bb“,“cc“};

private

static

int

j

=

10;

public

int

ii;

static

{

System.out.println(“静态块1“);

System.out.println(i);

}

static

{

System.out.println(“静态块2“);

}

/**

@param

args/

public

static

void

main(String[]

args)

{

Test

t

=

new

Test();

t.changeInt(i);

System.out.println(“傳入int值:“+

i

+

“:::“+

j);

t.changeString(s);

System.out.println(“傳入String值1:“+

s);

t.changeString2(s);

System.out.println(“傳入String值2:“+

s);

t.changeStrings(ss);

System.out.println(“傳入数组:“+

ss[0]

);

t.changeTest(t);

System.out.println(“傳入對象“+t.i);

t.ii

=

111;

t.changeTest1(t);

System.out.println(t.ii);

}

public

void

changeInt(int

i)

{

i

=

10;

j++;

}

public

void

changeString(String

s)

{

s

=

new

String(“changeString“);

}

public

void

changeString2(String

s)

{

s.replace(“o“,“a“);

}

public

void

changeStrings(String[]

s)

{

s[0]

=

“numberChange“;

}

public

void

changeTest(Test

t)

{

Test

tt

=

new

Test();

tt.i

=

100;

t

=

tt;

}

public

void

changeTest1(Test

t)

{

Test

tt

=

new

Test();

tt.ii

=

1;

t

=

tt;

}

}

结果:

静态块1

1

静态块2

傳入int值:1:::11

傳入String值1:string1

傳入String值2:string1

傳入数组:numberChange

傳入對象100

111

一个方法中可以有多个静态块。

疯狂Java培训fkjava的课程采用针对性培养,全面提升学员就业能力,重点加强训练职业素质。老师辛勤的讲解,让学员充分感受Java的魅力,充分激发每个学员对于编程的热爱,让学员在半年的时间内掌握8-10万的代码量,成为真正的技术高手,疯狂Java采用企业全真模拟开发训练,迅速积累项目经验。让学员迅速获得其他人需要花费两年才能获得的工作技能,无忧就业!

篇2:阀门材料性能参数全

阀门材料性能参数全 本文关键词:阀门,性能参数,材料

阀门材料性能参数全 本文简介:阀门材料性能参数(3)PropertiesofValveMaterials(3)美国尼伯科有限公司合金ALLOY美国材料试验协会编号ASTMNO.其它合金规定OTHERALLOYDESIGNATION正常或最高化学含量NOMINALORMAXIMUMCHEMICALCOMPOSITION铝AL碳CA

阀门材料性能参数全 本文内容:

阀门材料性能参数

(3)

Properties

of

Valve

Materials

(3)

美国尼伯科有限公司

合金

ALLOY

美国材料试

验协会编号

ASTM

NO.

其它合金规定

OTHER

ALLOY

DESIGNATION

正常或最高化学含量

NOMINAL

OR

MAXIMUM

CHEMICAL

COMPOSITION

AL

CARBON

C

CHROME

Cr

COBALT

Co

COPPER

Cu

IRON

Fe

LEAD

Pb

MANGA-

NESE

Mn

MOLYB-

NESE

Mo

精炼304

Wrot

304

铸造316

Cast

316

A

167

304

A

351

CF8M

UNS

S30400

UNS

S31600

0.08

0.08

19

20

2

1.5

2.5

铸造316

Cast

316

铸造316

Cast

316

A

743

CF16F

A

743

CF8M

0.16

0.08

20

20

1.5

1.5

1.5

2.5

精炼316

Wrot

316

铸造410

Cast

410

A

276

316

A

217

CA

15

UNS

S31600

0.08

0.15

17

13

2

1

2.5

锻造410

Forged

410

精炼

410

Wrot

410

A

182

F6A2

A

276

410

UNS

S41000

0.15

0.15

13

13

1

1

精炼416

Wrot

416

精炼420

Wrot

420

A

582

A

276

420

UNS

S41600

UNS

S42000

0.15

0.15

13

13

1.25

1

铸造合金20

Cast

Alloy

20

精炼合金20

Wrot

Alloy

20

A

743

CN7M

B

473

20C63

UNS

N08020

0.07

0.07

20

20

3.5

3.5

1.5

2

2.5

2.5

精炼17-4PH

Wrot

17-4PH

A

564

630

UNS

S17400

0.07

16

3.5

1

锻造碳钢

Forged

Carbon

Steel

铸造碳钢

Cast

Carbon

Steel

A

105

A

216

WCB

0.35

0.3

1

1.1

DN32铸造铬钼钢

11/4

Cast

Cr.

Moly

Steel

铸造铬钼钢

Cast

Cr.

Moly

Steel

A

217

WC6

A

217

C5

0.2

0.2

1.2

5

0.7

0.55

0.55

0.55

铸造低碳钢

Cast

Low

Carbon

Steel

镍低碳钢

Nickel-Low

Carbon

Steel

A

352

LCB

A

352

LC2

0.3

0.25

1.0

0.65

B-7合金钢柱头螺栓

B-7

Alloy

Steel

Studs

304不锈钢螺母

304

SS

Nuts

A

193

B7

A

194

GR8

0.4

0.08

1

19

0.85

2

0.2

2-H合金钢螺母

2-H

Alloy

Steel

Nuts

普通钢螺栓

Reg.

Steel

Bolting

A

194

2H

A

307

Gr.

B

0.4

0.2

0.45

钢螺栓

Steel

Bolting

304不锈钢螺栓

304SS

Bolting

A

449

A

493

304

UNS

S30400

0.4

0.08

19

0.6

2

有眼螺栓

Eyebolts

压盖螺母

Gland

Nuts

A

489

A

563

Gr.

A

0.48

0.37

0.55

0.35

1.0

1.0

H/W螺母

H/W

Nuts

铰链螺栓销钉

Swing

Bolt

Pin

A

108

1020

A

108

1212

UNS

G10200

UNS

G12120

0.20

0.13

0.45

0.85

轭架衬套盖

Yoke

Bushing

Caps

阀座环基础

Seat

Ring

Base

A108

12L14

A

519

1026

0.15

0.25

.25

1.0

0.75

(商标材料,如:Stellite

6*,Stoody

6,和Wallex

6)

(Trademark

Materials

like,Stellite

6*,Stoody

6,and

Wallex

6)

AWS

5.13

1.25

29

55

2.5

铸造蒙乃尔

Cast

Monel

精炼蒙乃尔

(K-500)

Wrot

Monel

(K-500)

QQ-N-288-E

QQ-N-286-C1B

0.5

3.0

0.3

0.1

30

24

3.5

2.0

1.5

1.5

ALLOY

正常或最高化学含量

NOMINAL

OR

MAXIMUM

CHEMICAL

COMPOSITION

正常物理特性

NOMINAL

PHYSICAL

PROPERTIES

NICKEL

Ni

PHOS

P

SILICON

Si

SULFUR

S

TIN

Sn

TITAN-

IUM

Ti

TUNG-

STEM

W

ZINC

Zn

抗拉强度

TENSILE

STRENGTH

Psi

屈服强度

YIELD

STRENGTH

Psi

%

伸张度

ELONGATION

硬度

HARDENESS

精炼304

Wrot

304

铸造316

Cast

316

9

11

0.045

0.04

1.0

2.0

0.03

0.04

75,000

70,000

30,000

30,000

40

25

202

HB

铸造316

Cast

316

铸造316

Cast

316

11

12

0.04

0.045

2.0

1.0

0.04

0.03

70,000

75,000

30,000

30,000

30

30

精炼316

Wrot

316

铸造410

Cast

410

12

1

0.045

0.04

1.0

1.5

0.03

0.04

75,000

90,000

30,000

65,000

30

18

锻造410

Forged

410

精炼

410

Wrot

410

0.5

0.04

0.04

1.0

1.0

0.03

0.03

85,000

100,000

55,000

80,000

18

15

200/225

HB

精炼416

Wrot

416

精炼420

Wrot

420

0.06

0.04

1.0

1.0

0.15

0.03

114,000

95,000

17

235

HB

250/450

HB

铸造合金20

Cast

Alloy

20

精炼合金20

Wrot

Alloy

20

28

35

0.04

0.045

1.5

1.0

0.04

0.035

62,000

85,000

25,000

35,000

35

30

精炼17-4PH

Wrot

17-4PH

4

0.04

1.0

0.03

115,000

75,000

18

255

HB

锻造碳钢

Forged

Carbon

Steel

铸造碳钢

Cast

Carbon

Steel

0.04

0.04

0.035

0.6

0.05

0.045

70,000

70,000

36,000

36,000

22

22

187

HB

DN32铸造铬钼钢

11/4

Cast

Cr.

Moly

Steel

铸造铬钼钢

Cast

Cr.

Moly

Steel

0.04

0.04

0.06

0.75

0.045

0.045

铸造低碳钢

Cast

Low

Carbon

Steel

镍低碳钢

Nickel-Low

Carbon

Steel

2.5

0.04

0.04

0.6

0.6

0.045

0.045

65,000

70,000

35,000

40,000

24

24

B-7合金钢柱头螺栓

B-7

Alloy

Steel

Studs

304不锈钢螺母

304

SS

Nuts

9

0.035

0.045

0.25

1.0

0.04

0.03

125,000

105,000

16

126/300

HB

2-H合金钢螺母

2-H

Alloy

Steel

Nuts

普通钢螺栓

Reg.

Steel

Bolting

0.04

0.04

0.05

0.05

100,000

18

250/300

HB

121/212

HB

钢螺栓

Steel

Bolting

304不锈钢螺栓

304SS

Bolting

9

0.04

0.045

1.0

0.05

0.03

120,000

90,000

92,000

14

有眼螺栓

Eyebolts

压盖螺母

Gland

Nuts

0.35

0.04

0.04

0.25

0.2

0.05

0.05

75,000

30,000

30

H/W螺母

H/W

Nuts

铰链螺栓销钉

Swing

Bolt

Pin

0.04

0.10

0.05

0.20

120/300

HB

轭架衬套盖

Yoke

Bushing

Caps

阀座环基础

Seat

Ring

Base

0.07

0.04

0.3

0.05

55,000

35,000

25

(商标材料,如:Stellite

6*,Stoody

6,和Wallex

6)

(Trademark

Materials

like,Stellite

6*,Stoody

6,and

Wallex

6)

3

5

105,000

10

350

HB

铸造蒙乃尔

Cast

Monel

精炼蒙乃尔

(K-500)

Wrot

Monel

(K-500)

60

67

1.5

0.5

0.01

0.5

65,000

135,000

32,500

95,000

25

20

125/150

HB

255

HB

篇3:javajvm参数-Xms-Xmx-Xmn-Xss调优总结

javajvm参数-Xms-Xmx-Xmn-Xss调优总结 本文关键词:参数,Xms,javajvm,Xss,Xmn

javajvm参数-Xms-Xmx-Xmn-Xss调优总结 本文简介:javajvm参数-Xms-Xmx-Xmn-Xss调优总结常见配置举例堆大小设置JVM中最大堆大小有三方面限制:相关操作系统的数据模型(32-bt还是64-bit)限制;系统的可用虚拟内存限制;系统的可用物理内存限制.32位系统下,一般限制在1.5G~2G;64为操作系统对内存无限制.我在Windo

javajvm参数-Xms-Xmx-Xmn-Xss调优总结 本文内容:

java

jvm

参数

-Xms

-Xmx

-Xmn

-Xss

调优总结

常见配置举例

堆大小设置

JVM

中最大堆大小有三方面限制:相关操作系统的数据模型(32-bt还是64-bit)限制;系统的可用虚拟内存限制;系统的可用物理内存限制.32位系统

下,一般限制在1.5G~2G;64为操作系统对内存无限制.我在Windows

Server

2003

系统,3.5G物理内存,JDK5.0下测试,最大可设置为1478m.

典型设置:

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区进行多次复制,这样可以增加对象再年轻代的存活

时间,增加在年轻代即被回收的概论.

回收器选择

JVM给了三种选择:串行收集器,并行收集器,并发收集器,但是串行收集器只适用于小数据

量的情况,所以这里的选择主要针对并行收集器和并发收集器.默认

情况下,JDK5.0以前都是使用串行收集器,如果想使用其他收集器需要在启动时加入相应参数.JDK5.0以后,JVM会根据当前系统配置进行判断.

吞吐量优先的并行收集器

如上文所述,并行收集器主要以到达一定的吞吐量为目标,适用于科学技术和后台处理等.

典型配置:

java

-Xmx3800m

-Xms3800m

-Xmn2g

-Xss128k

-XX:+UseParallelGC

-XX:ParallelGCThreads=20

-XX:+UseParallelGC:选择垃圾收集器为并行收集器.此配置仅对年轻代有效.即上述配置下,年轻代使用并发收集,而年老代仍旧使用串行收集.

-XX:ParallelGCThreads=20:配置并行收集器的线程数,即:同时多少个线程一起进行垃圾回收.此值最好配置与处理器数目相等.

java

-Xmx3550m

-Xms3550m

-Xmn2g

-Xss128k

-XX:+UseParallelGC

-XX:ParallelGCThreads=20

-XX:+UseParallelOldGC

-XX:+UseParallelOldGC:配置年老代垃圾收集方式为并行收集.JDK6.0支持对年老代并行收集.

java

-Xmx3550m

-Xms3550m

-Xmn2g

-Xss128k

-XX:+UseParallelGC

-XX:MaxGCPauseMillis=100

-XX:MaxGCPauseMillis=100:设置每次年轻代垃圾回收的最长时间,如果无法满足此时间,JVM会自动调整年轻代大小,以满足此值.

java

-Xmx3550m

-Xms3550m

-Xmn2g

-Xss128k

-XX:+UseParallelGC

-XX:MaxGCPauseMillis=100

-XX:+UseAdaptiveSizePolicy

-XX:+UseAdaptiveSizePolicy:设置此选项后,并行收集器会自动选择年轻代区大小和相应的Survivor区比例,以达到目标系统规定的最低相应时间或者收集频率等,此值建议使用并行收集器时,一直打开.

响应时间优先的并发收集器

如上文所述,并发收集器主要是保证系统的响应时间,减少垃圾收集时的停顿时间.适用于应用服务器,电信领域等.

典型配置:

java

-Xmx3550m

-Xms3550m

-Xmn2g

-Xss128k

-XX:ParallelGCThreads=20

-XX:+UseConcMarkSweepGC

-XX:+UseParNewGC

-XX:+UseConcMarkSweepGC:设置年老代为并发收集.测试中配置这个以后,-XX:NewRatio=4的配置失效了,原因不明.所以,此时年轻代大小最好用-Xmn设置.

-XX:+UseParNewGC:设置年轻代为并行收集.可与CMS收集同时使用.JDK5.0以上,JVM会根据系统配置自行设置,所以无需再设置此值.

java

-Xmx3550m

-Xms3550m

-Xmn2g

-Xss128k

-XX:+UseConcMarkSweepGC

-XX:CMSFullGCsBeforeCompaction=5

-XX:+UseCMSCompactAtFullCollection

-XX:CMSFullGCsBeforeCompaction:由于并发收集器不对内存空间进行压缩,整理,所以运行一段时间以后会产生“碎片“,使得运行效率降低.此值设置运行多少次GC以后对内存空间进行压缩,整理.

-XX:+UseCMSCompactAtFullCollection:打开对年老代的压缩.可能会影响性能,但是可以消除碎片

辅助信息

JVM提供了大量命令行参数,打印信息,供调试使用.主要有以下一些:

-XX:+PrintGC

输出形式:[GC

118250K->113543K(130112K),0.0094143

secs]

[Full

GC

121376K->10414K(130112K),0.0650971

secs]

-XX:+PrintGCDetails

输出形式:[GC

[DefNew:

8614K->781K(9088K),0.0123035

secs]

118250K->113543K(130112K),0.0124633

secs]

[GC

[DefNew:

8614K->8614K(9088K),0.0000665

secs][Tenured:

112761K->10414K(121024K),0.0433488

secs]

121376K->10414K(130112K),0.0436268

secs]

-XX:+PrintGCTimeStamps

-XX:+PrintGC:PrintGCTimeStamps可与上面两个混合使用

输出形式:11.851:

[GC

98328K->93620K(130112K),0.0082960

secs]

-XX:+PrintGCApplicationConcurrentTime:打印每次垃圾回收前,程序未中断的执行时间.可与上面混合使用

输出形式:Application

time:

0.5291524

seconds

-XX:+PrintGCApplicationStoppedTime:打印垃圾回收期间程序暂停的时间.可与上面混合使用

输出形式:Total

time

for

which

application

threads

were

stopped:

0.0468229

seconds

-XX:PrintHeapAtGC:打印GC前后的详细堆栈信息

输出形式:

34.702:

[GC

{Heap

before

gc

invocations=7:

def

new

generation

total

55296K,used

52568K

[0x1ebd0000,0x227d0000,0x227d0000)

eden

space

49152K,99%

used

[0x1ebd0000,0x21bce430,0x21bd0000)

from

space

6144K,55%

used

[0x221d0000,0x22527e10,0x227d0000)

to

space

6144K,0%

used

[0x21bd0000,0x21bd0000,0x221d0000)

tenured

generation

total

69632K,used

2696K

[0x227d0000,0x26bd0000,0x26bd0000)

the

space

69632K,3%

used

[0x227d0000,0x22a720f8,0x22a72200,0x26bd0000)

compacting

perm

gen

total

8192K,used

2898K

[0x26bd0000,0x273d0000,0x2abd0000)

the

space

8192K,35%

used

[0x26bd0000,0x26ea4ba8,0x26ea4c00,0x273d0000)

ro

space

8192K,66%

used

[0x2abd0000,0x2b12bcc0,0x2b12be00,0x2b3d0000)

rw

space

12288K,46%

used

[0x2b3d0000,0x2b972060,0x2b972200,0x2bfd0000)

34.735:

[DefNew:

52568K->3433K(55296K),0.0072126

secs]

55264K->6615K(124928K)Heap

after

gc

invocations=8:

def

new

generation

total

55296K,used

3433K

[0x1ebd0000,0x227d0000,0x227d0000)

eden

space

49152K,0%

used

[0x1ebd0000,0x1ebd0000,0x21bd0000)

from

space

6144K,55%

used

[0x21bd0000,0x21f2a5e8,0x221d0000)

to

space

6144K,0%

used

[0x221d0000,0x221d0000,0x227d0000)

tenured

generation

total

69632K,used

3182K

[0x227d0000,0x26bd0000,0x26bd0000)

the

space

69632K,4%

used

[0x227d0000,0x22aeb958,0x22aeba00,0x26bd0000)

compacting

perm

gen

total

8192K,used

2898K

[0x26bd0000,0x273d0000,0x2abd0000)

the

space

8192K,35%

used

[0x26bd0000,0x26ea4ba8,0x26ea4c00,0x273d0000)

ro

space

8192K,66%

used

[0x2abd0000,0x2b12bcc0,0x2b12be00,0x2b3d0000)

rw

space

12288K,46%

used

[0x2b3d0000,0x2b972060,0x2b972200,0x2bfd0000)

},0.0757599

secs]

-Xloggc:filename:与上面几个配合使用,把相关日志信息记录到文件以便分析.

常见配置汇总

堆设置

-Xms:初始堆大小

-Xmx:最大堆大小

-XX:NewSize=n:设置年轻代大小

-XX:NewRatio=n:设置年轻代和年老代的比值.如:为3,表示年轻代与年老代比值为1:3,年轻代占整个年轻代年老代和的1/4

-XX:SurvivorRatio=n:年轻代中Eden区与两个Survivor区的比值.注意Survivor区有两个.如:3,表示Eden:Survivor=3:2,一个Survivor区占整个年轻代的1/5

-XX:MaxPermSize=n:设置持久代大小

收集器设置

-XX:+UseSerialGC:设置串行收集器

-XX:+UseParallelGC:设置并行收集器

-XX:+UseParalledlOldGC:设置并行年老代收集器

-XX:+UseConcMarkSweepGC:设置并发收集器

垃圾回收统计信息

-XX:+PrintGC

-XX:+PrintGCDetails

-XX:+PrintGCTimeStamps

-Xloggc:filename

并行收集器设置

-XX:ParallelGCThreads=n:设置并行收集器收集时使用的CPU数.并行收集线程数.

-XX:MaxGCPauseMillis=n:设置并行收集最大暂停时间

-XX:GCTimeRatio=n:设置垃圾回收时间占程序运行时间的百分比.公式为1/(1+n)

并发收集器设置

-XX:+CMSIncrementalMode:设置为增量模式.适用于单CPU情况.

-XX:ParallelGCThreads=n:设置并发收集器年轻代收集方式为并行收集时,使用的CPU数.并行收集线程数.

调优总结

年轻代大小选择

响应时间优先的应用:尽可能设大,直到接近系统的最低响应时间限制(根据实际情况选择).在此种情况下,年轻代收集发生的频率也是最小的.同时,减少到达年老代的对象.

吞吐量优先的应用:尽可能的设置大,可能到达Gbit的程度.因为对响应时间没有要求,垃圾收集可以并行进行,一般适合8CPU以上的应用.

年老代大小选择

应时间优先的应用:年老代使用并发收集器,所以其大小需要小心设置,一般要考虑并发会话率和会话持续时间等一些参数.如果堆设置小了,可以会造成内存碎

片,高回收频率以及应用暂停而使用传统的标记清除方式;如果堆大了,则需要较长的收集时间.最优化的方案,一般需要参考以下数据获得:

并发垃圾收集信息

持久代并发收集次数

传统GC信息

花在年轻代和年老代回收上的时间比例

减少年轻代和年老代花费的时间,一般会提高应用的效率

吞吐量优先的应用:一般吞吐量优先的应用都有一个很大的年轻代和一个较小的年老代.原因是,这样可以尽可能回收掉大部分短期对象,减少中期的对象,而年老代尽存放长期存活对象.

较小堆引起的碎片问题

为年老代的并发收集器使用标记,清除算法,所以不会对堆进行压缩.当收集器回收时,他会把相邻的空间进行合并,这样可以分配给较大的对象.但是,当堆空

间较小时,运行一段时间以后,就会出现“碎片“,如果并发收集器找不到足够的空间,那么并发收集器将会停止,然后使用传统的标记,清除方式进行回收.如果

出现“碎片“,可能需要进行如下配置:

-XX:+UseCMSCompactAtFullCollection:使用并发收集器时,开启对年老代的压缩.

-XX:CMSFullGCsBeforeCompaction=0:上面配置开启的情况下,这里设置多少次Full

GC后,对年老代进行压缩

同一个工程下,有两个类,这两个类中只有很少的变动,而最关健的FOR却没有一点变动,可是当我分别运行这两个程序的时候却出现一个很严重的问题,一个程

序循环的快,一个循环的慢.这到底是怎么回事呢~???苦苦寻找了半天也没有想到是为什么,因为程序改变的部分根不影响我循环的速度,可是结果却是有很大

的差别,一个大约是在一分钟这内就可以循环完,可是另一个却需要六七分钟,这根本就不是一个数据理级的麻.两个完全一样的循环,从代码上根本上是看不出有

什么问题.不得以求助同事吧,可是同事看了也感觉很诡异,两个人在那订着代码又看了一个多小时,最后同事让我来个干净点的,关机重启.我到也听话,就顺着

同事的意思去了,可就在关机的这个时候他突然说是不是内存的问题,我也空然想到了,还真的有可能是内存的问题,因为快的那个在我之前运行程序之前可给过

1G的内存啊,而后来的这个我好像是没有设过内存啊,机器起来了,有了这个想法进去看看吧,结果正中要害,果真是慢的那个没有开内存,程序运行时只不过是

JVM默认开的内存.我初步分析是因为内存太小,而我的程序所用内存又正好卡在JVM所开内存边上,不至于溢出.当程序运行时就得花费大部分时间去调用

GC去,这样就导致了为什么相同的循环出现两种不同的效率~!

顺便把内存使用情况的方法也贴出来:

public

static

String

getMemUsage()

{

long

free

=

java.lang.Runtime.getRuntime().freeMemory();

long

total

=

java.lang.Runtime.getRuntime().totalMemory();

StringBuffer

buf

=

new

StringBuffer();

buf.append(“[Mem:

used

“).append((total-free)>>20)

.append(“M

free

“).append(free>>20)

.append(“M

total

“).append(total>>20).append(“M]“);

return

buf.toString();

}

google一下,大概就说JVM是这样来操作内存:

堆(Heap)和非堆(Non-heap)内存

照官方的说法:“Java

虚拟机具有一个堆,堆是运行时数据区域,所有类实例和数组的内存均从此处分配.堆是在

Java

虚拟机启动时创建的.““在JVM中堆之外的内存称为非堆内存(Non-heap

memory)“.可以看出JVM主要管理两种类型的内存:堆和非堆.简单来说堆就是Java代码可及的内存,是留给开发人员使用的;非堆就是JVM留给

自己用的,所以方法区,JVM内部处理或优化所需的内存(如JIT编译后的代码缓存),每个类结构(如运行时常数池,字段和方法数据)以及方法和构造方法

的代码都在非堆内存中.

堆内存分配

JVM初始分配的内存由-Xms指定,默认是物理内存的1/64;JVM最大分配的内存由-Xmx指

定,默认是物理内存的1/4.默认空余堆内存小于40%时,JVM就会增大堆直到-Xmx的最大限制;空余堆内存大于70%时,JVM会减少堆直到-Xms的最小限制.因此服务器一般设置-Xms,-Xmx相等以避免在每次GC

后调整堆的大小.

非堆内存分配

JVM使用-XX:PermSize设置非堆内存初始值,默认是物理内存的1/64;由XX:MaxPermSize设置最大非堆内存的大小,默认是物理内存的1/4.

JVM内存限制(最大值)

先JVM内存首先受限于实际的最大物理内存,假设物理内存无限大的话,JVM内存的最大值跟操作系统有很大的关系.简单的说就32位处理器虽然可控内存空

间有4GB,但是具体的操作系统会给一个限制,这个限制一般是

2GB-3GB(一般来说Windows系统下为1.5G-2G,Linux系统下为2G-3G),而64bit以上的处理器就不会有限制了

JVM内存的调优

1.

Heap设定与垃圾回收Java

Heap分为3个区,Young,Old和Permanent.Young保存刚实例化的对象.当该区被填满时,GC会将对象移到Old

区.Permanent区则负责保存反射对象,本文不讨论该区.JVM的Heap分配可以使用-X参数设定,-Xms

初始Heap大小

-Xmx

java

heap最大值

-Xmn

young

generation的heap大小

JVM有2个GC线程.第一个线程负责回收Heap的Young区.第二个线程在Heap不足时,遍历Heap,将Young

区升级为Older区.Older区的大小等于-Xmx减去-Xmn,不能将-Xms的值设的过大,因为第二个线程被迫运行会降低JVM的性能.

为什么一些程序频繁发生GC?有如下原因:

l

程序内调用了System.gc()或Runtime.gc().

l

一些中间件软件调用自己的GC方法,此时需要设置参数禁止这些GC.

l

Java的Heap太小,一般默认的Heap值都很小.

l

频繁实例化对象,Release对象.此时尽量保存并重用对象,例如使用StringBuffer()和String().

如果你发现每次GC后,Heap的剩余空间会是总空间的50%,这表示你的Heap处于健康状态.许多Server端的Java程序每次GC后最好能有65%的剩余空间.经验之谈:

1.Server端JVM最好将-Xms和-Xmx设为相同值.为了优化GC,最好让-Xmn值约等于-Xmx的1/3[2].

2.一个GUI程序最好是每10到20秒间运行一次GC,每次在半秒之内完成[2].

注意:

1.增加Heap的大小虽然会降低GC的频率,但也增加了每次GC的时间.并且GC运行时,所有的用户线程将暂停,也就是GC期间,Java应用程序不做任何工作.

2.Heap大小并不决定进程的内存使用量.进程的内存使用量要大于-Xmx定义的值,因为Java为其他任务分配内存,例如每个线程的Stack等.

2.Stack的设定

每个线程都有他自己的Stack.

-Xss

每个线程的Stack大小

Stack的大小限制着线程的数量.如果Stack过大就好导致内存溢漏.-Xss参数决定Stack大小,例如-Xss1024K.如果Stack太小,也会导致Stack溢漏.

3.硬件环境

硬件环境也影响GC的效率,例如机器的种类,内存,swap空间,和CPU的数量.

如果你的程序需要频繁创建很多transient对象,会导致JVM频繁GC.这种情况你可以增加机器的内存,来减少Swap空间的使用[2].

4.4种GC

第一种为单线程GC,也是默认的GC.,该GC适用于单CPU机器.

第二种为Throughput

GC,是多线程的GC,适用于多CPU,使用大量线程的程序.第二种GC与第一种GC相似,不同在于GC在收集Young区是多线程的,但在Old区和第一种一样,仍然采用单线程.-XX:+UseParallelGC参数启动该GC.

第三种为Concurrent

Low

Pause

GC,类似于第一种,适用于多CPU,并要求缩短因GC造成程序停滞的时间.这种GC可以在Old区的回收同时,运行应用程序.-XX:+UseConcMarkSweepGC参数启动该GC.

第四种为Incremental

Low

Pause

GC,适用于要求缩短因GC造成程序停滞的时间.这种GC可以在Young区回收的同时,回收一部分Old区对象.-Xincgc参数启动该GC.

    以上《Java中方法参数的一些总结》范文由一流范文网精心整理,如果您觉得有用,请收藏及关注我们,或向其它人分享我们。转载请注明出处 »一流范文网»最新范文»Java中方法参数的一些总结
‖大家正在看...
设为首页 - 加入收藏 - 关于范文吧 - 返回顶部 - 手机版
Copyright © 一流范文网 如对《Java中方法参数的一些总结》有疑问请及时反馈。All Rights Reserved