学习笔记 JVM Log技术简介

开发 后端
你对JVM Log是否了解,它是指Java虚拟机的Log日志,JVM在调试版本下,会输出hotspot.JVM Log。通过参数-XJVM Loggc:FileName,来设置GC的JVM Log。

本文向大家简单介绍一下JVM Log的概念,初始化和释放,JVM Log各个class的实现除了很自然地运用了继承,同时运用重载new/deleteoperator这个C++特有的技巧,也 有效地封装了JVM Log的创建和释放功能。

JVM Log简介

JVM在调试版本下,会输出hotspot.JVM Log。通过参数-XJVM Loggc:FileName,来设置GC的JVM Log。

JVM Log的实现主要在

  1. \hotspot\src\share\vm\utilities\ostream.hpp  
  2. \hotspot\src\share\vm\utilities\ostream.cpp  
  3. \hotspot\src\share\vm\utilities\xmlstream.hpp  
  4. \hotspot\src\share\vm\utilities\xmlstream.cpp  
  5. \hotspot\src\share\vm\utilities\defaultStream.hpp  
  6.  

主要的class是:outputStream、fileStream、xmlTextStream、defaultStream

继承关系是:

ResourceObj
  |
  |-- outputStream
       |
       |--- fileStream
       |
       |--- xmlTextStream
             |
             |--- defaultStream

defaultStream::instance是其他模块调用的主要接口。

JVM Log的初始化

ostream_init()初始化defaultStream::instance
ostream_init_JVM Log()初始化JVM的DebugJVM Log和GC的JVM Log,
其中其核心代码是:defaultStream::instance->has_JVM Log_file();它转而调用voiddefaultStream::init_JVM Log();这是真正干活的代码了。
defaultStream::init_JVM Log的代码写的很清晰,其中只有一个C++的语法点需要注意:重载newoperator。

ostream.cppline346
fileStream*file=new(ResourceObj::C_HEAP)fileStream(try_name);
这是因为outputStream的父类是ResourceObj,ResourceObj重载了new和deleteoperator。关于C++语法就不多说了,太多的好书论及了这个问题。

JVM Log的最终释放

Threads::destroy_vm()
   |
   |--> exit_globals()
         |
         |--> ostream_exit()
              |
              |--> 用delete operator释放掉各个JVM Log

总结

JVM Log各个class的实现除了很自然地运用了继承,同时运用重载new/deleteoperator这个C++特有的技巧,也 有效地封装了JVM Log的创建和释放功能。

【编辑推荐】

  1. 新一代JVM垃圾回收算法出炉
  2. 探究JVM1.6与JVM1.5性能差距
  3. JVM监控在本地和远程的应用
  4. JVM参数设置使用技巧
  5. JVM启动参数中标准参数列表速查手册
责任编辑:佚名 来源: javaeye.com
相关推荐

2010-09-27 10:11:54

JVMLinux

2010-09-26 16:55:31

JVM学习笔记

2010-09-27 15:26:17

JVM for Lin

2010-07-15 18:04:20

Perl模式

2010-06-08 15:59:38

UML建模工具

2010-07-19 16:47:54

Perl

2010-06-28 17:14:20

UML类图符号

2024-01-16 14:08:06

Linux系统数据

2009-10-28 10:55:27

2009-10-27 09:35:58

ADSL接入技术

2009-10-29 10:48:51

光纤接入技术

2009-10-30 09:42:39

Internet接入技

2010-07-05 15:15:25

UML9种图

2009-09-25 10:10:52

Linux学习Linux目录简介

2009-10-27 11:34:36

无线接入技术

2010-09-25 15:33:19

JVM垃圾回收

2009-11-11 09:23:38

ADO.NET Con

2010-09-25 11:13:18

JVMClassLoader

2009-10-26 10:31:20

linux库

2010-06-18 17:49:34

UML面向对象技术
点赞
收藏

51CTO技术栈公众号