Java 性能调优

一、CPU使用率:

      可分为两类:

        用户态时间:CPU执行应用代码所占时间的百分比。

        系统态时间:CPU执行内核代码所占的时间百分比。

    性能调优的目的 在尽可能端的时间内让CPU使用率尽可能高。(该如何理解?)

    Linux上的命令:vmstat 1

二、JVM常用调优工具:

   1、  jmap -- histo <PID>  > c:\histo. txt : 生成指定PID的java 程序的对象统计信息 ,并放入指定文件。

文件内容大致如下:

num: 按所占容量从大到小排序。instance - 实例数量。 bytes - 类实例所占容量总数, class name : 类名程

 num     #instances         #bytes  class name
----------------------------------------------
   1:        375719      174118552  [C
   2:         74122      143278216  [I
   3:         55963       69552600  [B
   4:        103253       16450040  <constMethodKlass>
   5:        103253       14053848  <methodKlass>
   6:        367739       11767648  java.lang.String
   7:          9018       11477544  <constantPoolKlass>
   8:        144054        8778104  <symbolKlass>
   9:          7711        7211448  <constantPoolCacheKlass>
  10:        124234        6957104  org.springframework.asm.Item
  11:          9018        6848624  <instanceKlassKlass>
  12:        117874        6756776  [Ljava.lang.Object;
  13:         56198        6743760  java.net.SocksSocketImpl
  14:        267804        6427296  org.springframework.asm.Edge
  15:         99960        6397440  org.springframework.asm.Label
  16:         64001        5632088  java.lang.reflect.Method
  17:          7690        4664408  <methodDataKlass>
  18:        123465        3950880  java.util.HashMap$Entry
  19:         95100        3804000  java.util.concurrent.ConcurrentHashMap$Segment
  20:        237026        3792416  java.lang.Object
  21:         34890        3430304  [Ljava.util.HashMap$Entry;
  22:         29204        3270848  org.aspectj.weaver.ResolvedMemberImpl
  23:         97300        3113600  java.util.concurrent.locks.ReentrantLock$NonfairSync
  24:         62009        2976432  org.apache.tomcat.util.buf.ByteChunk

2、jmap -heap: 显示堆详细信息: 如堆内存的配置,各个区域的大小。

文件内容如下:
using thread-local object allocation.
Parallel GC with 43 thread(s)

Heap Configuration:
   MinHeapFreeRatio = 40
   MaxHeapFreeRatio = 70
   MaxHeapSize      = 4294967296 (4096.0MB)
   NewSize          = 1310720 (1.25MB)
   MaxNewSize       = 17592186044415 MB
   OldSize          = 5439488 (5.1875MB)
   NewRatio         = 2
   SurvivorRatio    = 8
   PermSize         = 21757952 (20.75MB)
   MaxPermSize      = 268435456 (256.0MB)

Heap Usage:
PS Young Generation
Eden Space:
   capacity = 1300103168 (1239.875MB)
   used     = 939054160 (895.5518341064453MB)
   free     = 361049008 (344.3231658935547MB)
   72.22920327504347% used
From Space:
   capacity = 64946176 (61.9375MB)
   used     = 37112896 (35.39361572265625MB)
   free     = 27833280 (26.54388427734375MB)
   57.14408189328961% used
To Space:
   capacity = 62783488 (59.875MB)
   used     = 0 (0.0MB)
   free     = 62783488 (59.875MB)
   0.0% used
PS Old Generation
   capacity = 2863333376 (2730.6875MB)
   used     = 946639600 (902.7858734130859MB)
   free     = 1916693776 (1827.901626586914MB)
   33.06075387290146% used
PS Perm Generation
   capacity = 144179200 (137.5MB)
   used     = 78843592 (75.19110870361328MB)
   free     = 65335608 (62.30889129638672MB)
   54.68444269353693% used

3、jmap -dump, 生成Java堆转储快照。

4、jstat - 虚拟机统计信息监视工具,用于监视虚拟机个性运行状态信息。
生成的文件格式如下:

  S0       S1       E         O        P       YGC     YGCT    FGC    FGCT     GCT   
 54.24   0.00  64.89  44.88  54.68   2638  106.742     6   15.380  122.122
 54.24   0.00  65.39  44.88  54.68   2638  106.742     6   15.380  122.122
 54.24   0.00  65.41  44.88  54.68   2638  106.742     6   15.380  122.122
 54.24   0.00  65.43  44.88  54.68   2638  106.742     6   15.380  122.122
 54.24   0.00  65.45  44.88  54.68   2638  106.742     6   15.380  122.122

问题: S0,S1,Eden, Old,Permanent 区分设置多大比例比较合适?

5、jstack - Java 堆栈跟踪工具,用于生成虚拟机当前时刻的线程快照,treaddump 或 javacore文件。线程快照就是当前
虚拟机内每一条线程正在执行的方法堆栈的集合,生成线程快照的主要目的是定位线程出现长时间停顿的原因,如线程间死锁、
死循环、请求外部资源导致的长时间等待等都是导致线程线程长时间停顿的原因。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值