`
flowaters
  • 浏览: 41224 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java jvm 记录(二)

阅读更多
jstat工具可以详细的显示出HotSpot VM的性能信息.

目前Sun JDK和OpenJDK中均使用了HotSpot技术,即热点代码探测技术。通过执行计数器找出最具有编译价值的代码,然后通知JIT编译器以方法为单位进行编译。如果一个方法被频繁调用,或方法中有效循环次数很多,将会分别触发标准编译和OSR(栈上替换)编译动作。通过编译器与解释器恰当地协同工作,可以在最优化的程序响应时间与最佳执行性能中取得平衡,而且无须等待本地代码输出才能执行程序,即时编译的时间压力也相对减小,这样有助于引入更多的代码优化技术,输出质量更高的本地代码。

详细的参数及含义见本文结尾的参考文献3.

例如:1. 查看使用说明

jstat -help

Usage: jstat -help|-options
       jstat -<option> [-t] [-h<lines>] <vmid> [<interval> [<count>]]

Definitions:
  <option>      An option reported by the -options option
  <vmid>        Virtual Machine Identifier. A vmid takes the following form:
                     <lvmid>[@<hostname>[:<port>]]
                Where <lvmid> is the local vm identifier for the target
                Java virtual machine, typically a process id; <hostname> is
                the name of the host running the target Java virtual machine;
                and <port> is the port number for the rmiregistry on the
                target host. See the jvmstat documentation for a more complete
                description of the Virtual Machine Identifier.
  <lines>       Number of samples between header lines.
  <interval>    Sampling interval. The following forms are allowed:
                    <n>["ms"|"s"]
                Where <n> is an integer and the suffix specifies the units as
                milliseconds("ms") or seconds("s"). The default units are "ms".
  <count>       Number of samples to take before terminating.
  -J<flag>      Pass <flag> directly to the runtime system.

例如2. 查看可用参数
jstat -options

-class
-compiler
-gc
-gccapacity
-gccause
-gcnew
-gcnewcapacity
-gcold
-gcoldcapacity
-gcpermcapacity
-gcutil
-printcompilation


例如:3. gc统计的摘要. 每10秒显示一次,显示5次.
jstat -gcutil pid 10000 5
或者
jstat -gcutil pid 10s 5

结果:
  S0     S1     E      O      P     YGC     YGCT    FGC    FGCT     GCT
50.00   0.00  85.00  90.19  75.27 154722  515.577   740   63.594  579.171
  0.00  25.00  83.56  90.23  75.27 154723  515.582   740   63.594  579.176
25.00   0.00  68.09  90.28  75.27 154724  515.586   740   63.594  579.180
  0.00  75.00  51.18  90.38  75.27 154725  515.590   740   63.594  579.184
50.00   0.00  34.47  90.47  75.27 154726  515.594   740   63.594  579.188

其中参数的含义:
S0: Survivor space 0, S0区使用量/S0区容量=S0区使用率.
S1: Survivor space 1, S1区使用量/S1区容量=S1区使用率.
E: Eden space, Eden区使用量/Eden区容量=Eden区使用率.
O: Old space, Old区使用量/Old区容量=Old区使用率.
P: Permanent space, Permanent区使用量/Permanent区容量=Permanent区使用率.
YGC: Young generation GC events, Young GC次数.
YGCT: Young generation garbage collection time, Young GC时间(毫秒).
FGC: Number of full GC events, Full GC次数.
FGCT: Full garbage collection time, Full GC时间(毫秒).
GCT: Total garbage collection time, 总GC时间(毫秒).

注:在New Generation块中,一般进行Younc GC垃圾回收,采用Copying的算法,速度快。每次GC的时候,存活下来的对象首先由Eden拷贝到某个Survivor Space, 当Survivor Space空间满了后, 剩下的live对象就被直接拷贝到Old Generation中去。因此,每次GC后,Eden内存块会被清空。

具体的例子如下.

  S0     S1     E      O      P     YGC     YGCT    FGC    FGCT     GCT
21.72   0.00  23.83  82.26  38.02 813360 47227.030    40   12.181 47239.211
21.72   0.00  32.21  82.26  38.02 813360 47227.030    40   12.181 47239.211
21.72   0.00  42.84  82.26  38.02 813360 47227.030    40   12.181 47239.211
21.72   0.00  52.90  82.26  38.02 813360 47227.030    40   12.181 47239.211
21.72   0.00  60.76  82.26  38.02 813360 47227.030    40   12.181 47239.211
21.72   0.00  69.49  82.26  38.02 813360 47227.030    40   12.181 47239.211
21.72   0.00  77.63  82.26  38.02 813360 47227.030    40   12.181 47239.211
21.72   0.00  85.47  82.26  38.02 813360 47227.030    40   12.181 47239.211
21.72   0.00  92.54  82.26  38.02 813360 47227.030    40   12.181 47239.211
21.72  13.03 100.00  82.26  38.02 813361 47227.030    40   12.181 47239.211
  0.00  16.59   9.18  82.26  38.02 813361 47227.091    40   12.181 47239.272
  0.00  16.59  19.23  82.26  38.02 813361 47227.091    40   12.181 47239.272
  0.00  16.59  24.48  82.26  38.02 813361 47227.091    40   12.181 47239.272
  0.00  16.59  33.70  82.26  38.02 813361 47227.091    40   12.181 47239.272
  0.00  16.59  44.49  82.26  38.02 813361 47227.091    40   12.181 47239.272
  0.00  16.59  64.78  82.26  38.02 813361 47227.091    40   12.181 47239.272
  0.00  16.59  85.11  82.26  38.02 813361 47227.091    40   12.181 47239.272
21.34   0.00   5.14  82.26  38.02 813362 47227.152    40   12.181 47239.334
21.34   0.00  24.11  82.26  38.02 813362 47227.152    40   12.181 47239.334
21.34   0.00  44.38  82.26  38.02 813362 47227.152    40   12.181 47239.334
21.34   0.00  61.60  82.26  38.02 813362 47227.152    40   12.181 47239.334


过程:使用Eden/S0/S1三个分区

算法过程:[见参考4]
1). Eden+S0可分配新生对象;
2). 对Eden+S0进行垃圾收集,存活对象复制到S1。清理Eden+S0。一次新生代GC结束。
3). Eden+S1可分配新生对象;
4). 对Eden+S1进行垃圾收集,存活对象复制到S0。清理Eden+S1。二次新生代GC结束。
5). goto 1。


例如4. 监控类加载情况
jstat -class pid 10000 5

Loaded  Bytes  Unloaded  Bytes     Time
  2130  4228.4        5     8.4       1.97
  2130  4228.4        5     8.4       1.97
  2130  4228.4        5     8.4       1.97
  2130  4228.4        5     8.4       1.97
  2130  4228.4        5     8.4       1.97

Loaded: 加载的类的数量
Bytes:加载的类所占的空间
Unloaded:卸载的类的数量
Bytes:卸载的类占用的空间
Time:操作所消耗的时间(毫秒)


例如5. 监控类编译情况
jstat -compiler pid 10000 5

Compiled Failed Invalid   Time   FailedType FailedMethod
     643      0       0    12.11          0
     643      0       0    12.11          0
     643      0       0    12.11          0
     643      0       0    12.11          0
     643      0       0    12.11          0

Compiled: 实时编译的数量
Failed:失败的数量
Invalid:无效的数量
Time:消耗的时间(毫秒)
FailedType:失败的类型数
FailedMethod:失败的方法数

例如6. 监控堆内存heap的gc情况
jstat -gc 15959 10000 5

S0C    S1C    S0U    S1U      EC       EU        OC         OU       PC     PU    YGC     YGCT    FGC    FGCT     GCT
128.0  128.0   0.0    64.0   2432.0   2364.8   17600.0    15941.8   21248.0 15995.2 154895  516.259  741    63.692  579.951
128.0  128.0   64.0   0.0    2432.0   2104.9   17600.0    15957.8   21248.0 15995.2 154896  516.263  741    63.692  579.955
128.0  128.0   0.0    96.0   2432.0   1664.5   17600.0    15973.8   21248.0 15995.2 154897  516.265  741    63.692  579.957
128.0  128.0   64.0   0.0    2432.0   1309.9   17600.0    15989.8   21248.0 15995.2 154898  516.268  741    63.692  579.960
128.0  128.0   0.0    32.0   2432.0   941.3    17600.0    15997.8   21248.0 15995.2 154899  516.272  741    63.692  579.964

S0C: Survivor space 0 Capacity, 当前survivor区0的容量(KB)
S1C: Survivor space 1 Capacity, 当前survivor区1的容量(KB)
S0U: Survivor space 0 Utilzation, survivor区0的使用量(KB)
S1U: Survivor space 1 Utilzation, survivor区1的使用量(KB)
EC: Eden space Capacity, 当前eden区的容量(KB)
EU: Eden space Utilzation, 当前eden区的使用量(KB)
OC: Old space Capacity, 当前old区的容量(KB)
OU: Old space Utilzation, 当前old区的使用量(KB)
PC, Permanent space Capacity, 当前permanent区的容量(KB)
PU, Permanent space Capacity, 当前permanent区的使用量(KB)
YGC: Young Generation Garbage Collection events, Young GC次数
YGCT: Young Generation Garbage Collection Time, Young GC时间(毫秒)
FGC: Full Garbage Collection events, Full GC次数
FGCT: Full Garbage Collection Time, Full GC时间(毫秒)
GCT: total Garbage Collection Time, 总的GC时间(毫秒)

具体过程和例子3是一致的, 详细的例子如下.

S0C    S1C    S0U    S1U      EC       EU        OC         OU       PC     PU    YGC     YGCT    FGC    FGCT     GCT
128.0  128.0   0.0    32.0   2432.0   390.5    16768.0    15175.2   21248.0 15992.6 155419  518.181  744    63.984  582.165
128.0  128.0   0.0    32.0   2432.0   796.7    16768.0    15175.2   21248.0 15992.6 155419  518.181  744    63.984  582.165
128.0  128.0   0.0    32.0   2432.0   1230.3   16768.0    15175.2   21248.0 15992.6 155419  518.181  744    63.984  582.165
128.0  128.0   0.0    32.0   2432.0   1648.7   16768.0    15175.2   21248.0 15992.6 155419  518.181  744    63.984  582.165
128.0  128.0   0.0    32.0   2432.0   1663.0   16768.0    15175.2   21248.0 15992.6 155419  518.181  744    63.984  582.165
128.0  128.0   0.0    32.0   2432.0   2067.7   16768.0    15175.2   21248.0 15992.6 155419  518.181  744    63.984  582.165
128.0  128.0   96.0   0.0    2432.0   404.7    16768.0    15191.2   21248.0 15992.6 155420  518.184  744    63.984  582.168
128.0  128.0   96.0   0.0    2432.0   838.4    16768.0    15191.2   21248.0 15992.6 155420  518.184  744    63.984  582.168
128.0  128.0   96.0   0.0    2432.0   1244.7   16768.0    15191.2   21248.0 15992.6 155420  518.184  744    63.984  582.168
128.0  128.0   96.0   0.0    2432.0   1661.9   16768.0    15191.2   21248.0 15992.6 155420  518.184  744    63.984  582.168
128.0  128.0   96.0   0.0    2432.0   1723.3   16768.0    15191.2   21248.0 15992.6 155420  518.184  744    63.984  582.168
128.0  128.0   96.0   0.0    2432.0   2067.5   16768.0    15191.2   21248.0 15992.6 155420  518.184  744    63.984  582.168
128.0  128.0   0.0    64.0   2432.0   432.0    16768.0    15207.2   21248.0 15992.6 155421  518.188  744    63.984  582.172
128.0  128.0   0.0    64.0   2432.0   838.3    16768.0    15207.2   21248.0 15992.6 155421  518.188  744    63.984  582.172
128.0  128.0   0.0    64.0   2432.0   1244.6   16768.0    15207.2   21248.0 15992.6 155421  518.188  744    63.984  582.172
128.0  128.0   0.0    64.0   2432.0   1660.9   16768.0    15207.2   21248.0 15992.6 155421  518.188  744    63.984  582.172
128.0  128.0   0.0    64.0   2432.0   1761.2   16768.0    15207.2   21248.0 15992.6 155421  518.188  744    63.984  582.172
128.0  128.0   0.0    64.0   2432.0   2094.2   16768.0    15207.2   21248.0 15992.6 155421  518.188  744    63.984  582.172
128.0  128.0   64.0   0.0    2432.0   404.7    16768.0    15223.2   21248.0 15992.6 155422  518.191  744    63.984  582.175
128.0  128.0   64.0   0.0    2432.0   811.0    16768.0    15223.2   21248.0 15992.6 155422  518.191  744    63.984  582.175





例如7. 监控gc中每一代的最大值和使用情况
stat -gccapacity pid 10000 5
NGCMN    NGCMX     NGC     S0C   S1C       EC      OGCMN      OGCMX       OGC         OC      PGCMN    PGCMX     PGC       PC     YGC    FGC
21120.0 337920.0   2688.0  128.0  128.0   2432.0    42240.0   675840.0    17600.0    17600.0  21248.0  83968.0  21248.0  21248.0 154902   741
21120.0 337920.0   2688.0  128.0  128.0   2432.0    42240.0   675840.0    17600.0    17600.0  21248.0  83968.0  21248.0  21248.0 154902   741
21120.0 337920.0   2688.0  128.0  128.0   2432.0    42240.0   675840.0    17600.0    17600.0  21248.0  83968.0  21248.0  21248.0 154903   741
21120.0 337920.0   2688.0  128.0  128.0   2432.0    42240.0   675840.0    17600.0    17600.0  21248.0  83968.0  21248.0  21248.0 154904   741
21120.0 337920.0   2688.0  128.0  128.0   2432.0    42240.0   675840.0    17600.0    17600.0  21248.0  83968.0  21248.0  21248.0 154905   741

NGCMN: New Generation Capacity MiNimum, 新生代容量的最小值(KB)
NGCMX: New Generation Capacity MaXimum, 新生代容量的最大值(KB)
NGC: New Generation Capacity, 新生代容量的当前值(KB)
S0C: Survivor space 0 Capacity, 当前survivor区0的容量(KB)
S1C: Survivor space 1 Capacity, 当前survivor区1的容量(KB)
EC: Eden space Capacity, 当前eden区的容量(KB)
OGCMN: Old Generation Capacity MiNimum, old代容量的最小值(KB)
OGCMX: Old Generation Capacity MaXimum, old代容量的最大值(KB)
OGC: Old Generation Capacity, old代容量的当前值(KB)
OC: Old space Capacity, old区容量的当前值(KB)
PGCMN: Permanent Generation Capacity MiNimum, 持久代容量的最小值(KB)
PGCMX: Permanent Generation Capacity MaXimum, 持久代容量的最大值(KB)
PGC: Permanent Generation Capacity, 持久代容量的当前值(KB)
PC: Permanent space Capacity, 持久代容量的当前值(KB)
YGC: Young Generation Garbage Collection events, Young GC次数
FGC: Full Garbage Collection events, Full GC次数

问题:为什么NGC可以小于NGCMN?

例如8. 监控GC原因. 在gcutil后加上gc原因列.
jstat -gccause pid 10000 5

  S0     S1     E      O      P     YGC     YGCT    FGC    FGCT     GCT    LGCC                 GCC
  0.00  50.00  68.24  91.44  75.28 154907  516.298   741   63.692  579.990 unknown GCCause      No GC
50.00   0.00  51.18  91.53  75.28 154908  516.301   741   63.692  579.994 unknown GCCause      No GC
  0.00  50.00  34.47  91.62  75.28 154909  516.305   741   63.692  579.997 unknown GCCause      No GC
50.00   0.00  16.64  91.71  75.28 154910  516.308   741   63.692  580.001 unknown GCCause      No GC
50.00   0.00  84.97  91.71  75.28 154910  516.308   741   63.692  580.001 unknown GCCause      No GC

S0: Survivor space 0, S0区使用量/S0区容量=S0区使用率.
S1: Survivor space 1, S1区使用量/S1区容量=S1区使用率.
E: Eden space, Eden区使用量/Eden区容量=Eden区使用率.
O: Old space, Old区使用量/Old区容量=Old区使用率.
P: Permanent space, Permanent区使用量/Permanent区容量=Permanent区使用率.
YGC: Young generation GC events, Young GC次数.
YGCT: Young generation garbage collection time, Young GC时间(毫秒).
FGC: Number of full GC events, Full GC次数.
FGCT: Full garbage collection time, Full GC时间(毫秒).
GCT: Total garbage collection time, 总GC时间(毫秒).
LGCC: Last Garbage Collection Cause, 上次GC原因.
GCC: Garbage Collection Cause, 本次GC原因.


例如9. 监控新生代new generation的GC情况
jstat -gcnew pid 10000 5

S0C    S1C    S0U    S1U   TT MTT  DSS      EC       EU     YGC     YGCT
128.0  128.0   64.0    0.0  1  15  128.0   2432.0   2065.1 154912  516.316
128.0  128.0    0.0   64.0  1  15  128.0   2432.0   2063.0 154913  516.319
128.0  128.0   64.0    0.0  1  15  128.0   2432.0   1655.0 154914  516.323
128.0  128.0    0.0   64.0  1  15  128.0   2432.0   1220.5 154915  516.327
128.0  128.0   64.0    0.0  1  15  128.0   2432.0    814.0 154916  516.331

S0C: Survivor space 0 Capacity, 当前survivor区0的容量(KB)
S1C: Survivor space 1 Capacity, 当前survivor区1的容量(KB)
S0U: Survivor space 0 Utilzation, survivor区0的使用量(KB)
S1U: Survivor space 1 Utilzation, survivor区1的使用量(KB)
TT: Tenuring Threshold, 存活次数. 达到最大存活次数后,才能晋升到旧生代(Old Generation)
MTT: Maximum Tenuring Thershold, 最大存活次数.
DSS: Desired Survivor Size (KB), 期望存活大小(KB)
EC: Eden space Capacity, 当前eden区的容量(KB)
EU: Eden space Utilzation, 当前eden区的使用量(KB)
YGC: Young Generation Garbage Collection events, Young GC次数
YGCT: Young Generation Garbage Collection Time, Young GC时间(毫秒)


例如10. 监控新生代new generation的最大值和使用情况
jstat -gcnewcapacity pid 10000 5

  NGCMN      NGCMX       NGC      S0CMX     S0C     S1CMX     S1C       ECMX        EC      YGC   FGC
   21120.0   337920.0     2688.0    128.0 112640.0 112640.0    128.0   337792.0     2432.0 154918   741
   21120.0   337920.0     2688.0    128.0 112640.0 112640.0    128.0   337792.0     2432.0 154919   741
   21120.0   337920.0     2688.0    128.0 112640.0 112640.0    128.0   337792.0     2432.0 154920   741
   21120.0   337920.0     2688.0    128.0 112640.0 112640.0    128.0   337792.0     2432.0 154921   741
   21120.0   337920.0     2688.0    128.0 112640.0 112640.0    128.0   337792.0     2432.0 154922   741

NGCMN: New Generation Capacity MiNimum, 新生代容量最小值(KB).
NGCMX: New Generation Capacity MaXimum, 新生代容量最大值(KB).
NGC: New Generation Capacity, 新生代容量当前值(KB).
S0CMX: Survivor space 0 Capacity MaXimum, 生存区0容量的最大值(KB).
S0C: Survivor space 0 Capacity, 生存区0容量(KB).
S1CMX: Survivor space 1 Capacity MaXimum, 生存区1容量的最大值(KB).
S1C: Survivor space 1 Capacity, 生存区1容量(KB).
ECMX: Eden space Capacity MaXimum, Eden区容量的最大值(KB).
EC: Eden Capacity, Eden区容量的当前值(KB).
YGC: Young generation GC events, Young GC次数.
FGC: Number of full GC events, Full GC次数.

问题:为什么S0CMX可以比S0C小?

例如11. 监控old代和持久代permanent的GC情况
jstat -gcold pid 10000 5

   PC       PU        OC          OU       YGC    FGC    FGCT     GCT
21248.0  15995.2     17600.0     16333.8 154923   741   63.692  580.047
21248.0  15995.2     17600.0     16349.8 154924   741   63.692  580.050
21248.0  15995.2     17600.0     16365.8 154925   741   63.692  580.054
21248.0  15995.2     17600.0     16381.8 154926   741   63.692  580.057
21248.0  15995.2     17600.0     16381.8 154926   741   63.692  580.057

PC: Permanent space Capacity, 持久区当前容量(KB).
PU: Permanent space Utilzation, 持久区使用量(KB).
OC: Old space Capacity, Old区当前容量(KB)
OU: Old space Utilzation, Old区使用量(KB)
YGC: Young generation GC events, Young GC次数.
FGC: Number of full GC events, Full GC次数.
FGCT: Full garbage collection time, Full GC时间(毫秒).
GCT: total Garbage Collection Time, 总的GC时间(毫秒)

例如12. 监控old代的最大值和使用情况
jstat -gcoldcapacity pid 10000 5

   OGCMN       OGCMX        OGC         OC       YGC   FGC    FGCT     GCT
    42240.0    675840.0     17600.0     17600.0 154928   741   63.692  580.064
    42240.0    675840.0     17600.0     17600.0 154929   741   63.692  580.068
    42240.0    675840.0     17600.0     17600.0 154929   741   63.692  580.068
    42240.0    675840.0     17600.0     17600.0 154930   741   63.692  580.072
    42240.0    675840.0     17600.0     17600.0 154931   741   63.692  580.075

OGCMN: Old Generation Capacity MiNimum, 老生代容量最小值(KB).
OGCMX: Old Generation Capacity MaXimum, 老生代容量最大值(KB).
OGC: Old Generation Capacity, 老生代容量当前值(KB).
OC: Old space Capacity, 老生区当前容量(KB)
YGC: Young generation GC events, Young GC次数.
FGC: Number of full GC events, Full GC次数.
FGCT: Full garbage collection time, Full GC时间(毫秒).
GCT: total Garbage Collection Time, 总的GC时间(毫秒)


例如13. 监控持久代permanent的最大值和使用情况
jstat -gcpermcapacity pid 10000 5

  PGCMN      PGCMX       PGC         PC      YGC   FGC    FGCT     GCT
   21248.0    83968.0    21248.0    21248.0 154933   741   63.692  580.083
   21248.0    83968.0    21248.0    21248.0 154934   741   63.692  580.086
   21248.0    83968.0    21248.0    21248.0 154935   741   63.692  580.090
   21248.0    83968.0    21248.0    21248.0 154935   741   63.692  580.090
   21248.0    83968.0    21248.0    21248.0 154936   741   63.692  580.094

PGCMN: Permanent Generation Capacity MiNimum, 持久代容量最小值(KB).
PGCMX: Permanent Generation Capacity MaXimum, 持久代容量最大值(KB).
PGC: Permanent Generation Capacity, 持久代容量当前值(KB).
PC: Permanent space Capacity, 持久区容量当前值(KB).
YGC: Young generation GC events, Young GC次数.
FGC: Number of full GC events, Full GC次数.
FGCT: Full garbage collection time, Full GC时间(毫秒).
GCT: total Garbage Collection Time, 总的GC时间(毫秒)


例如14. 监控HotSpot的实时编译情况
jstat -printcompilation pid 10000 5

Compiled  Size  Type Method
     643    754    1 org/apache/logging/log4j/core/appender/rolling/DefaultRolloverStrategy purgeAscending
     643    754    1 org/apache/logging/log4j/core/appender/rolling/DefaultRolloverStrategy purgeAscending
     643    754    1 org/apache/logging/log4j/core/appender/rolling/DefaultRolloverStrategy purgeAscending
     643    754    1 org/apache/logging/log4j/core/appender/rolling/DefaultRolloverStrategy purgeAscending
     643    754    1 org/apache/logging/log4j/core/appender/rolling/DefaultRolloverStrategy purgeAscending

Compiled: 编译的任务数
Size: 方法的bytecode的bytes数
Type: 编译类型
Method: 编译的方法对应的类型和方法名.


参考文献:
1. Sun HotSpot VM
2. Java SE 7: Reviewing JVM Performance Command Line Tools
3. jstat - Java Virtual Machine Statistics Monitoring Tool
4. JVM中的垃圾收集算法和Heap分区简记
分享到:
评论

相关推荐

    Java JVM Instruction Set

    创建数组时,JVM需要在堆中分配内存,并记录数组的大小和类型。访问数组元素则通过索引查找数组中的具体位置。 ##### 构造函数 构造函数用于初始化对象的状态。JVM通过调用特定的构造方法来完成这一过程。 #### ...

    Java jvm虚拟机.zip

    2. 运行时数据区:JVM将内存分为不同的区域,如方法区(存储类信息)、堆(存放对象实例)、栈(存储方法调用)、程序计数器(记录下一条要执行的指令地址)和本地方法栈(服务本地方法,如JNI调用)。 3. 执行引擎...

    java -jvm 内存分配和jvm调优

    Java JVM(Java虚拟机)内存分配与调优是Java开发者必须掌握的重要技能,它涉及到程序的性能优化和稳定性。在Java应用中,JVM扮演着至关重要的角色,它负责解析字节码、管理内存以及执行线程等。本文将深入探讨JVM...

    java jvm及性能优化_javajvm优化_Java性能分析_

    二、JVM内存管理 1. 堆内存:分为新生代和老年代,新生代采用复制算法,老年代采用标记-整理或标记-压缩算法。 2. 方法区:存储类的元数据,包括常量池、字段和方法数据等,HotSpot中的 PermGen 被移除,替换为 ...

    揭秘Java虚拟机-JVM设计原理与实现

    《揭秘Java虚拟机-JVM设计原理与实现》这本书深入探讨了Java虚拟机(JVM)的工作原理及其在Java编程中的核心地位。Java虚拟机是Java平台的核心组成部分,它负责执行字节码,为开发者提供了跨平台的运行环境。以下是...

    java虚拟机JVM详解ppt

    #### 二、Java虚拟机(JVM)简介 Java虚拟机(JVM)是一种能够执行字节码(Bytecode)的虚拟机,其核心目标是实现跨平台兼容性。JVM拥有自己的硬件架构,包括处理器、堆栈、寄存器等,并具备一套完整的指令系统。 ##...

    Java虚拟机(JVM)面试题 51道.pdf

    Java虚拟机(JVM)是Java语言的核心组成部分,它为Java程序提供了一个跨平台的运行环境。以下是对JVM相关知识点的详细解释: 1. **Java代码的执行过程**: - 开发人员编写的Java代码首先通过`javac`编译器转化为`....

    【狂神说Java】JVM快速入门篇

    【狂神说Java】JVM快速入门篇 Java虚拟机(JVM)是Java平台的核心组成部分,它负责执行Java程序并提供与操作系统交互的接口。理解JVM的工作原理对于优化Java应用程序性能至关重要。本篇文章将从JVM的结构、内存模型...

    java JVM standard

    堆存储对象实例,栈保存方法调用,方法区存储类信息,程序计数器记录下一条要执行的指令,本地方法栈则为Java Native Interface (JNI) 方法服务。 4. **垃圾收集**:JVM提供自动内存管理,通过垃圾收集器回收不再...

    java jvm内存模型

    "Java JVM内存模型" Java虚拟机(JVM)内存模型是Java虚拟机的核心组件之一,它定义了Java程序在运行时的内存布局和管理方式。JVM内存模型主要分为五个部分:程序计数器、虚拟机栈、本地方法栈、堆、方法区。 1. ...

    实战JAVA虚拟机 JVM故障诊断与性能优化

    堆内存用于存储对象实例,栈内存处理方法调用,方法区存储类信息,程序计数器记录下一条指令地址,本地方法栈服务于Java的Native方法。 三、JVM参数配置 优化JVM性能的关键在于正确设置JVM参数。这些参数包括初始堆...

    JAVA虚拟机(JVM)规范(中文版).rar

    **JAVA虚拟机(JVM)规范** JAVA虚拟机(JVM)是Java语言的核心组成部分,它为Java程序提供了运行环境,使得Java代码能在任何支持JVM的平台上运行,实现了“一次编写,到处运行”的目标。JVM规范定义了Java程序如何...

    java JVM 内存回收

    Java虚拟机(JVM)的内存回收,也称为垃圾收集(GC),是Java语言特性的重要组成部分,用于自动管理内存,释放不再使用的对象所占用的空间。虽然Java语言本身并不强制要求JVM实现GC,但现代JVM如Oracle的HotSpot JVM...

    JAVA8虚拟机(jvm)规范_Chinese version.rar

    堆是存储对象实例的主要区域,栈则用于存储方法调用时的局部变量,方法区保存类信息,程序计数器记录下一条要执行的指令,本地方法栈服务于JNI(Java Native Interface)调用。 2. **垃圾回收**:Java的自动内存...

    java11-jvm白皮书_java_govwe_

    此外,JEP 323( Flight Recorder)提供了一套低开销的事件记录系统,用于收集诊断和分析数据,帮助开发者深入理解JVM内部的工作机制。 Java 11的JVM还增强了对变量处理的支持,如JEP 304(VarHandle)提供了一种...

    java中jvm内存分配相关资料总结整理

    Java虚拟机(JVM)是Java程序运行的基础,它负责解析字节码并管理程序的内存。本资料总结主要关注JVM内存分配及其运行原理,这对于理解和优化Java应用程序的性能至关重要。 1. **JVM内存结构** JVM内存分为几个...

    Java JVM面试题.rar

    Java虚拟机(JVM)是Java程序运行的基础,它是一个抽象的计算机系统,负责执行Java字节码。在Java开发和面试中,JVM相关的知识是必不可少的一部分。下面,我们将深入探讨Java JVM的一些核心概念和面试常问问题。 1....

    狂神说JVM探究.rar

    【狂神说JVM探究】是一份集合了多种格式的学习资料,主要涵盖了Java虚拟机(JVM)的基础知识。这份资料出自B站上的【狂神说Java】系列教程,为快速入门JVM提供了详实的笔记。以下是根据这些资源可能包含的一些关键...

    java_jvm.zip_java

    二、JVM内存结构 JVM内存分为以下几个区域: 1. 堆(Heap):所有对象都在堆中创建,是所有线程共享的一块内存区域。 2. 方法区(Method Area):存储类的信息,如类名、方法信息等。 3. 程序计数器(PC Register)...

    JVM规范第二版

    《JVM规范第二版》不仅是一部技术手册,更是一份历史见证,记录了Java虚拟机从无到有,再到成为全球范围内广泛应用的关键技术的过程。对于任何致力于深入理解Java内部机制、JVM工作原理及其实现的开发者来说,这份...

Global site tag (gtag.js) - Google Analytics