JAVA JVM


:Mr.zhou  阅读: 1,191 次

HotSpot VM

  HotSpot VM三个主要组件:VM运行时(Runtime)、JIT编译器(JIT Compiler)、内存管理器(Memory Manager)

  HotSpot VM运行时环境负责命令行解析、VM生命周期管理、类加载、字节码解释、异常处理、同步、线程管理、Java本地接口、VM致命错误处理和非Java堆管理。

命令行选项

命令行选项用于控制HotSpot VM的内部变量,每个变量都有类型和默认值。

命令行选项主要有3类:

1、标准选项(Standard Option):要求所有java虚拟机都必须实现的选项。

2、非标准选项(Nonstandard Option):以 -X 为前缀,不保证、也不强制所有JVM实现都必须支持。

3、非稳定选项:以 –XX 为前缀,为了特定需求而对JVM的运行进行校正。

HotSpot VM 堆

-Xms -Xmx 指定新生代和老年代空间大小的初始最小值和最大值(堆的大小)

-Xmn 新生代

-XX:PermSize -XX:MaxPermSize 永久代

java -Xms1024m -Xmx1024m -XX:PermSize=128m -XX:MaxPermSize=128m

JVM 性能监控

监控垃圾收集:

HotSpot VM 命令行选项:-XX:+PrintGCDetails -XX:+PrintGCTimeStamps(JVM启动开始经历的秒数) -XX:+PrintGCDateStamps(日期和时间) -Xloggc:logfile

java -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/data/logs/gc/appname-gc.log

使用Throughput收集器:-XX:+UseParallelOldGC (Minor GC Full GC 都采用多线程)或 -XX:+UseParallelGC(仅Minor GC 使用多线程)

性能监控,性能分析,性能调优:

1. 性能监控是一种以非入侵方式收集或查看应用运行性能数据的活动。监控通常指在生产、质量评估或开发环境中实施的主动性活动。当应用干系人报出性能问题却没有足以定位根本原因的线索时,首先会进行性能监控,随后时性能分析。

2. 性能分析是以入侵方式收集运行性能数据的活动,它会影响应用的吞吐量或响应性。性能分析很少在生产环境中进行,通常在质量评估、测试或开发环境中。性能分析是对性能监控或对干系人所报问题的回应,关注的范围比性能监控更集中。

3. 性能调优是改善应用响应性或吞吐量而更改参数、源代码或属性配置的活动。

性能监控:

1. CPU使用率:

  操作系统的CPU使用率一般分为用户态CPU使用率和系统态CPU使用率。用户态CPU使用率是指执行应用程序代码的时间占总CPU时间的百分比。系统态CPU使用率是指应用执行操作系统调用的时间占总CPU时间的百分比。系统态CPU使用率高意味着共享资源有竞争或者I/O设备间有大量的交互。提高应用性能和扩展性的一个目标是尽可能降低系统态CPU使用率。对于计算密集型应用还行监控每时钟指令数或每指令时钟周期等指标。top vmstat

2. 内存使用率:

  当应用程序运行所需的内存超过可用物理内存时,就会发生页面交换。vmstat

3. 网络I/O使用率

  分布式Java应用的性能和扩展性受限于网络带宽或网络I/O的性能。nicstat

4. 磁盘I/O使用率

  对有磁盘操作的应用还需监控磁盘I/O。磁盘I/O使用率是理解应用磁盘使用情况最有用的监控数据。iostat


转载请注明原文链接:http://www.z-dig.com/java-jvm.html



正文部分到此结束