hprof_b_spec.h

来自「一个小公司要求给写的很简单的任务管理系统。」· C头文件 代码 · 共 378 行

H
378
字号
/* * @(#)hprof_b_spec.h	1.4 05/11/17 *  * Copyright (c) 2006 Sun Microsystems, Inc. All Rights Reserved. *  * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: *  * -Redistribution of source code must retain the above copyright notice, this *  list of conditions and the following disclaimer. *  * -Redistribution in binary form must reproduce the above copyright notice,  *  this list of conditions and the following disclaimer in the documentation *  and/or other materials provided with the distribution. *  * Neither the name of Sun Microsystems, Inc. or the names of contributors may  * be used to endorse or promote products derived from this software without  * specific prior written permission. *  * This software is provided "AS IS," without a warranty of any kind. ALL  * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, INCLUDING * ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE * OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN MIDROSYSTEMS, INC. ("SUN") * AND ITS LICENSORS SHALL NOT BE LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE * AS A RESULT OF USING, MODIFYING OR DISTRIBUTING THIS SOFTWARE OR ITS * DERIVATIVES. IN NO EVENT WILL SUN OR ITS LICENSORS BE LIABLE FOR ANY LOST  * REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL,  * INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY  * OF LIABILITY, ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE,  * EVEN IF SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. *  * You acknowledge that this software is not designed, licensed or intended * for use in the design, construction, operation or maintenance of any * nuclear facility. */#ifndef HPROF_B_SPEC_H#define HPROF_B_SPEC_H/* Hprof binary format enums and spec. *//* Need to #define or typedef HprofId before including this file.  *    hprof used ObjectIndex or 4 bytes, but it can be 4 or 8 byte type. *//* -------------------------------------------------------------------- *//* -------------------------------------------------------------------- *//* -------------------------------------------------------------------- *//* * hprof binary format: (result either written to a file or sent over * the network). *  * WARNING: This format is still under development, and is subject to * change without notice. * *  header    "JAVA PROFILE 1.0.1" or "JAVA PROFILE 1.0.2" (0-terminated) *  u4        size of identifiers. Identifiers are used to represent *            UTF8 strings, objects, stack traces, etc. They usually *            have the same size as host pointers. For example, on *            Solaris and Win32, the size is 4. * u4         high word  * u4         low word    number of milliseconds since 0:00 GMT, 1/1/70 * [record]*  a sequence of records. *//* * Record format: * * u1         a TAG denoting the type of the record * u4         number of *microseconds* since the time stamp in the *            header. (wraps around in a little more than an hour) * u4         number of bytes *remaining* in the record. Note that *            this number excludes the tag and the length field itself. * [u1]*      BODY of the record (a sequence of bytes) *//* * The following TAGs are supported: * * TAG           BODY       notes *---------------------------------------------------------- * HPROF_UTF8               a UTF8-encoded name   * *               id         name ID *               [u1]*      UTF8 characters (no trailing zero) * * HPROF_LOAD_CLASS         a newly loaded class * *                u4        class serial number (> 0) *                id        class object ID *                u4        stack trace serial number *                id        class name ID * * HPROF_UNLOAD_CLASS       an unloading class * *                u4        class serial_number * * HPROF_FRAME              a Java stack frame * *                id        stack frame ID *                id        method name ID *                id        method signature ID *                id        source file name ID *                u4        class serial number *                i4        line number. >0: normal *                                       -1: unknown *                                       -2: compiled method *                                       -3: native method * * HPROF_TRACE              a Java stack trace * *               u4         stack trace serial number *               u4         thread serial number *               u4         number of frames *               [id]*      stack frame IDs * * * HPROF_ALLOC_SITES        a set of heap allocation sites, obtained after GC * *               u2         flags 0x0001: incremental vs. complete *                                0x0002: sorted by allocation vs. live *                                0x0004: whether to force a GC *               u4         cutoff ratio *               u4         total live bytes *               u4         total live instances *               u8         total bytes allocated *               u8         total instances allocated *               u4         number of sites that follow *               [u1        is_array: 0:  normal object *                                    2:  object array *                                    4:  boolean array *                                    5:  char array *                                    6:  float array *                                    7:  double array *                                    8:  byte array *                                    9:  short array *                                    10: int array *                                    11: long array *                u4        class serial number (may be zero during startup) *                u4        stack trace serial number *                u4        number of bytes alive *                u4        number of instances alive *                u4        number of bytes allocated *                u4]*      number of instance allocated * * HPROF_START_THREAD       a newly started thread. * *               u4         thread serial number (> 0) *               id         thread object ID *               u4         stack trace serial number *               id         thread name ID *               id         thread group name ID *               id         thread group parent name ID * * HPROF_END_THREAD         a terminating thread.  * *               u4         thread serial number * * HPROF_HEAP_SUMMARY       heap summary * *               u4         total live bytes *               u4         total live instances *               u8         total bytes allocated *               u8         total instances allocated * * HPROF_HEAP_DUMP or HPROF_HEAP_DUMP_SEGMENT          denote a heap dump * *               [heap dump sub-records]* * *                          There are four kinds of heap dump sub-records: * *               u1         sub-record type * *               HPROF_GC_ROOT_UNKNOWN         unknown root * *                          id         object ID * *               HPROF_GC_ROOT_THREAD_OBJ      thread object * *                          id         thread object ID  (may be 0 for a *                                     thread newly attached through JNI) *                          u4         thread sequence number *                          u4         stack trace sequence number * *               HPROF_GC_ROOT_JNI_GLOBAL      JNI global ref root * *                          id         object ID *                          id         JNI global ref ID * *               HPROF_GC_ROOT_JNI_LOCAL       JNI local ref * *                          id         object ID *                          u4         thread serial number *                          u4         frame # in stack trace (-1 for empty) * *               HPROF_GC_ROOT_JAVA_FRAME      Java stack frame * *                          id         object ID *                          u4         thread serial number *                          u4         frame # in stack trace (-1 for empty) * *               HPROF_GC_ROOT_NATIVE_STACK    Native stack * *                          id         object ID *                          u4         thread serial number * *               HPROF_GC_ROOT_STICKY_CLASS    System class * *                          id         object ID * *               HPROF_GC_ROOT_THREAD_BLOCK    Reference from thread block * *                          id         object ID *                          u4         thread serial number * *               HPROF_GC_ROOT_MONITOR_USED    Busy monitor * *                          id         object ID * *               HPROF_GC_CLASS_DUMP           dump of a class object * *                          id         class object ID *                          u4         stack trace serial number *                          id         super class object ID *                          id         class loader object ID *                          id         signers object ID *                          id         protection domain object ID *                          id         reserved *                          id         reserved * *                          u4         instance size (in bytes) * *                          u2         size of constant pool *                          [u2,       constant pool index, *                           ty,       type  *                                     2:  object *                                     4:  boolean *                                     5:  char *                                     6:  float *                                     7:  double *                                     8:  byte *                                     9:  short *                                     10: int *                                     11: long *                           vl]*      and value * *                          u2         number of static fields *                          [id,       static field name, *                           ty,       type, *                           vl]*      and value * *                          u2         number of inst. fields (not inc. super) *                          [id,       instance field name, *                           ty]*      type * *               HPROF_GC_INSTANCE_DUMP        dump of a normal object * *                          id         object ID *                          u4         stack trace serial number *                          id         class object ID *                          u4         number of bytes that follow *                          [vl]*      instance field values (class, followed *                                     by super, super's super ...) * *               HPROF_GC_OBJ_ARRAY_DUMP       dump of an object array * *                          id         array object ID *                          u4         stack trace serial number *                          u4         number of elements *                          id         array class ID *                          [id]*      elements * *               HPROF_GC_PRIM_ARRAY_DUMP      dump of a primitive array * *                          id         array object ID *                          u4         stack trace serial number *                          u4         number of elements *                          u1         element type *                                     4:  boolean array *                                     5:  char array *                                     6:  float array *                                     7:  double array *                                     8:  byte array *                                     9:  short array *                                     10: int array *                                     11: long array *                          [u1]*      elements * * HPROF_HEAP_DUMP_END      terminates series of heap dump segments * * HPROF_CPU_SAMPLES        a set of sample traces of running threads * *                u4        total number of samples *                u4        # of traces *               [u4        # of samples *                u4]*      stack trace serial number * * HPROF_CONTROL_SETTINGS   the settings of on/off switches * *                u4        0x00000001: alloc traces on/off *                          0x00000002: cpu sampling on/off *                u2        stack trace depth * */typedef enum HprofTag {    HPROF_UTF8                    = 0x01,    HPROF_LOAD_CLASS              = 0x02,    HPROF_UNLOAD_CLASS            = 0x03,    HPROF_FRAME                   = 0x04,    HPROF_TRACE                   = 0x05,    HPROF_ALLOC_SITES             = 0x06,    HPROF_HEAP_SUMMARY            = 0x07,    HPROF_START_THREAD            = 0x0A,    HPROF_END_THREAD              = 0x0B,    HPROF_HEAP_DUMP               = 0x0C,    HPROF_HEAP_DUMP_SEGMENT       = 0x1C, /* 1.0.2 only */    HPROF_HEAP_DUMP_END           = 0x2C, /* 1.0.2 only */    HPROF_CPU_SAMPLES             = 0x0D,    HPROF_CONTROL_SETTINGS        = 0x0E} HprofTag;/*  * Heap dump constants */typedef enum HprofGcTag {    HPROF_GC_ROOT_UNKNOWN       = 0xFF,    HPROF_GC_ROOT_JNI_GLOBAL    = 0x01,    HPROF_GC_ROOT_JNI_LOCAL     = 0x02,    HPROF_GC_ROOT_JAVA_FRAME    = 0x03,    HPROF_GC_ROOT_NATIVE_STACK  = 0x04,    HPROF_GC_ROOT_STICKY_CLASS  = 0x05,    HPROF_GC_ROOT_THREAD_BLOCK  = 0x06,    HPROF_GC_ROOT_MONITOR_USED  = 0x07,    HPROF_GC_ROOT_THREAD_OBJ    = 0x08,    HPROF_GC_CLASS_DUMP         = 0x20,    HPROF_GC_INSTANCE_DUMP      = 0x21,    HPROF_GC_OBJ_ARRAY_DUMP     = 0x22,    HPROF_GC_PRIM_ARRAY_DUMP    = 0x23} HprofGcTag;enum HprofType {	HPROF_ARRAY_OBJECT 	= 1,	HPROF_NORMAL_OBJECT 	= 2,	HPROF_BOOLEAN 		= 4,	HPROF_CHAR 		= 5,	HPROF_FLOAT 		= 6,	HPROF_DOUBLE 		= 7,	HPROF_BYTE 		= 8,	HPROF_SHORT 		= 9,	HPROF_INT 		= 10,	HPROF_LONG 		= 11};typedef unsigned char HprofType;#define HPROF_TYPE_SIZES 			\    {						\        /*Object?*/	sizeof(HprofId), 	\        /*Object?*/	sizeof(HprofId), 	\        /*Array*/	sizeof(HprofId), 	\        /*Object?*/	sizeof(HprofId), 	\        /*jboolean*/ 	1, 			\        /*jchar*/ 	2, 			\        /*jfloat*/ 	4, 			\        /*jdouble*/ 	8, 			\        /*jbyte*/	1, 			\        /*jshort*/	2, 			\        /*jint*/	4, 			\        /*jlong*/	8 			\    }#define HPROF_TYPE_IS_PRIMITIVE(ty)  ((ty)>=HPROF_BOOLEAN)#endif

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?