Crossfire JXClient, Trunk
|
Go to the documentation of this file.
31 #ifndef _JAVA_JVMTI_H_
32 #define _JAVA_JVMTI_H_
75 struct _jrawMonitorID;
730 jclass class_being_redefined,
735 const unsigned char* class_data,
736 jint* new_class_data_len,
737 unsigned char** new_class_data);
755 const void* code_addr,
758 const void* compile_info);
763 const void* code_addr);
873 void** new_address_ptr);
883 const void* reserved,
884 const char* description);
2005 return functions->ForceGarbageCollection(
this);
2487 const char*
value) {
2496 return functions->DisposeEnvironment(
this);
jvmtiTimerInfo * info_ptr
jrawMonitorID jlong millis
jvmtiEventBreakpoint Breakpoint
@ JVMTI_PRIMITIVE_TYPE_DOUBLE
jvmtiEventReserved reserved77
@ JVMTI_THREAD_MAX_PRIORITY
void(JNICALL * jvmtiEventFieldAccess)(jvmtiEnv *jvmti_env, JNIEnv *jni_env, jthread thread, jmethodID method, jlocation location, jclass field_klass, jobject object, jfieldID field)
jvmtiEventReserved reserved78
@ JVMTI_ERROR_THREAD_NOT_ALIVE
jobject jvmtiObjectReferenceCallback const void * user_data
unsigned int can_redefine_classes
jvmtiJlocationFormat * format_ptr
jvmtiEventSingleStep SingleStep
jclass jint * constant_pool_count_ptr
jvmtiEventException Exception
@ JVMTI_ERROR_INVALID_CLASS_FORMAT
@ JVMTI_HEAP_REFERENCE_STATIC_FIELD
@ JVMTI_ERROR_WRONG_PHASE
unsigned int can_retransform_any_class
jclass jint * method_count_ptr
unsigned int can_get_source_file_name
@ JVMTI_ERROR_UNSUPPORTED_VERSION
@ JVMTI_ERROR_INVALID_THREAD_GROUP
jthreadGroup thread_group
const jvmtiEventCallbacks * callbacks
jobject jint * hash_code_ptr
@ JVMTI_VERSION_SHIFT_MAJOR
jmethodID jint jvmtiLineNumberEntry ** table_ptr
unsigned int can_get_current_thread_cpu_time
@ JVMTI_ERROR_UNSUPPORTED_REDEFINITION_METHOD_DELETED
JNIEXPORT jint JNICALL Agent_OnLoad(JavaVM *vm, char *options, void *reserved)
jvmtiEventClassLoad ClassLoad
unsigned int can_generate_breakpoint_events
struct _jmethodID * jmethodID
@ JVMTI_EVENT_CLASS_FILE_LOAD_HOOK
jint(JNICALL * jvmtiHeapIterationCallback)(jlong class_tag, jlong size, jlong *tag_ptr, jint length, void *user_data)
jclass jint jint * constant_pool_byte_count_ptr
jint jclass ** classes_ptr
unsigned int can_generate_field_modification_events
@ JVMTI_ERROR_MUST_POSSESS_CAPABILITY
jvmtiEventMonitorContendedEnter MonitorContendedEnter
jint const jthread jvmtiError * results
jthread jvmtiStartFunction proc
@ JVMTI_ERROR_UNATTACHED_THREAD
@ JVMTI_HEAP_REFERENCE_SIGNERS
@ JVMTI_CLASS_STATUS_VERIFIED
struct jvmtiInterface_1_ jvmtiInterface_1
@ JVMTI_THREAD_STATE_WAITING_INDEFINITELY
jvmtiEventExceptionCatch ExceptionCatch
void(JNICALL * jvmtiEventCompiledMethodLoad)(jvmtiEnv *jvmti_env, jmethodID method, jint code_size, const void *code_addr, jint map_length, const jvmtiAddrLocationMap *map, const void *compile_info)
@ JVMTI_ERROR_INVALID_TYPESTATE
void(JNICALL * jvmtiEventVMObjectAlloc)(jvmtiEnv *jvmti_env, JNIEnv *jni_env, jthread thread, jobject object, jclass object_klass, jlong size)
jthread jint jint jvmtiFrameInfo * frame_buffer
unsigned int can_generate_object_free_events
jmethodID jint * modifiers_ptr
jobject jvmtiObjectReferenceCallback object_reference_callback
@ JVMTI_JLOCATION_MACHINEPC
@ JVMTI_ERROR_INVALID_EVENT_TYPE
void(JNICALL * jvmtiEventSingleStep)(jvmtiEnv *jvmti_env, JNIEnv *jni_env, jthread thread, jmethodID method, jlocation location)
jvmtiStringPrimitiveValueCallback string_primitive_value_callback
jmethodID char ** name_ptr
struct _jrawMonitorID * jrawMonitorID
jvmtiEventFieldModification FieldModification
unsigned int can_force_early_return
@ JVMTI_ERROR_UNSUPPORTED_REDEFINITION_METHOD_MODIFIERS_CHANGED
jthread jint jint jlong value
@ JVMTI_ERROR_UNSUPPORTED_REDEFINITION_HIERARCHY_CHANGED
jint jclass jobject initial_object
jvmtiEventCompiledMethodUnload CompiledMethodUnload
unsigned int can_generate_method_entry_events
@ JVMTI_EVENT_NATIVE_METHOD_BIND
@ JVMTI_EVENT_RESOURCE_EXHAUSTED
void(JNICALL * jvmtiEventGarbageCollectionStart)(jvmtiEnv *jvmti_env)
jmethodID jboolean * is_obsolete_ptr
@ JVMTI_THREAD_NORM_PRIORITY
struct _jobject * jobject
@ JVMTI_ERROR_OPAQUE_FRAME
void(JNICALL * jvmtiStartFunction)(jvmtiEnv *jvmti_env, JNIEnv *jni_env, void *arg)
jint const jlong jint jobject ** object_result_ptr
@ JVMTI_ERROR_FAILS_VERIFICATION
@ JVMTI_REFERENCE_PROTECTION_DOMAIN
jvmtiEventResourceExhausted ResourceExhausted
jthreadGroup jvmtiThreadGroupInfo * info_ptr
void(JNICALL * jvmtiEventThreadEnd)(jvmtiEnv *jvmti_env, JNIEnv *jni_env, jthread thread)
@ JVMTI_ERROR_THREAD_NOT_SUSPENDED
@ JVMTI_PRIMITIVE_TYPE_FLOAT
unsigned int can_generate_garbage_collection_events
@ JVMTI_THREAD_STATE_BLOCKED_ON_MONITOR_ENTER
jmethodID jint * bytecode_count_ptr
@ JVMTI_HEAP_FILTER_UNTAGGED
jint jclass const jvmtiHeapCallbacks const void * user_data
@ JVMTI_VERSION_SHIFT_MICRO
jvmtiReservedCallback reserved5
unsigned int can_signal_thread
jvmtiEventMode jvmtiEvent event_type
jclass jfieldID jboolean * is_synthetic_ptr
jint const jthread * thread_list
jvmtiReservedCallback reserved6
jthread jlong * nanos_ptr
unsigned int can_maintain_original_method_order
@ JVMTI_VERSION_MASK_MAJOR
jmethodID jlocation * start_location_ptr
@ JVMTI_HEAP_REFERENCE_MONITOR
jint(JNICALL * jvmtiHeapReferenceCallback)(jvmtiHeapReferenceKind reference_kind, const jvmtiHeapReferenceInfo *reference_info, jlong class_tag, jlong referrer_class_tag, jlong size, jlong *tag_ptr, jlong *referrer_tag_ptr, jint length, void *user_data)
@ JVMTI_RESOURCE_EXHAUSTED_OOM_ERROR
@ JVMTI_THREAD_STATE_INTERRUPTED
jthread jint jint jfloat value
jthread jint jint jlong * value_ptr
@ JVMTI_ERROR_INVALID_ENVIRONMENT
jint const jlong jint jobject jlong ** tag_result_ptr
jboolean may_skip_forward
void(JNICALL * jvmtiEventBreakpoint)(jvmtiEnv *jvmti_env, JNIEnv *jni_env, jthread thread, jmethodID method, jlocation location)
@ JVMTI_HEAP_OBJECT_TAGGED
jthread jint jmethodID * method_ptr
const char jrawMonitorID * monitor_ptr
@ JVMTI_ERROR_INVALID_SLOT
@ JVMTI_HEAP_OBJECT_UNTAGGED
@ JVMTI_JAVA_LANG_THREAD_STATE_MASK
@ JVMTI_EVENT_FIELD_MODIFICATION
@ JVMTI_KIND_ALLOC_ALLOC_BUF
@ JVMTI_ERROR_NOT_MONITOR_OWNER
@ JVMTI_HEAP_REFERENCE_SYSTEM_CLASS
@ JVMTI_CLASS_STATUS_INITIALIZED
unsigned int can_get_bytecodes
@ JVMTI_CLASS_STATUS_PRIMITIVE
@ JVMTI_VERSION_INTERFACE_JVMTI
jvmtiEventReserved reserved72
jvmtiReservedCallback reserved12
jint jvmtiStackInfo jint * thread_count_ptr
@ JVMTI_REFERENCE_ARRAY_ELEMENT
jthread jobject exception
@ JVMTI_ERROR_OUT_OF_MEMORY
jvmtiExtensionFunction func
Font2DTest To run then you should either specify the complete path to the commands or update your PATH environment variable as described in the installation instructions for the load Font2DTest html If you wish to modify any of the source you may want to extract the contents of the Font2DTest jar file by executing this the browser plugin viewer needs following permissions given in order to run but some of its features will be limited To enable all please add these permissions with policytool Introduction Font2DTest is an encompassing application for testing various fonts found on the user s system A number of controls are available to change many attributes of the current font including size
jvmtiReservedCallback reserved15
@ JVMTI_PRIMITIVE_TYPE_BOOLEAN
void(JNICALL * jvmtiEventClassLoad)(jvmtiEnv *jvmti_env, JNIEnv *jni_env, jthread thread, jclass klass)
const struct jvmtiInterface_1_ * functions
@ JVMTI_VERSION_MASK_MINOR
jvmtiVerboseFlag jboolean value
jobject context_class_loader
unsigned int can_generate_exception_events
@ JVMTI_ITERATION_CONTINUE
jmethodID char char ** signature_ptr
unsigned int can_generate_resource_exhaustion_threads_events
void(JNICALL * jvmtiEventDataDumpRequest)(jvmtiEnv *jvmti_env)
jint char *** property_ptr
jint * processor_count_ptr
jclass jint * interface_count_ptr
const unsigned char * class_bytes
@ JVMTI_EVENT_EXCEPTION_CATCH
@ JVMTI_ERROR_INVALID_METHODID
@ JVMTI_ERROR_INVALID_FIELDID
@ JVMTI_VERSION_INTERFACE_JNI
@ JVMTI_HEAP_ROOT_SYSTEM_CLASS
void(JNICALL * jvmtiEventDynamicCodeGenerated)(jvmtiEnv *jvmti_env, const char *name, const void *address, jint length)
@ JVMTI_EVENT_COMPILED_METHOD_LOAD
const void * start_address
jvmtiEventMonitorWaited MonitorWaited
@ JVMTI_EVENT_CLASS_PREPARE
jvmtiEventThreadStart ThreadStart
@ JVMTI_PRIMITIVE_TYPE_LONG
const jvmtiEventCallbacks jint size_of_callbacks
jvmtiEventMethodExit MethodExit
JNIEXPORT jint JNICALL Agent_OnAttach(JavaVM *vm, char *options, void *reserved)
jmethodID char char char ** generic_ptr
void(JNICALL * jvmtiEventVMDeath)(jvmtiEnv *jvmti_env, JNIEnv *jni_env)
jthread jint jint jobject value
jclass jfieldID char char ** signature_ptr
jint(JNICALL * jvmtiPrimitiveFieldCallback)(jvmtiHeapReferenceKind kind, const jvmtiHeapReferenceInfo *info, jlong object_class_tag, jlong *object_tag_ptr, jvalue value, jvmtiPrimitiveType value_type, void *user_data)
@ JVMTI_REFERENCE_INTERFACE
jvmtiEventGarbageCollectionStart GarbageCollectionStart
jint const jlong jint * count_ptr
jint(JNICALL * jvmtiReservedCallback)()
jint jthreadGroup ** groups_ptr
jthread jobject * monitor_ptr
jvmtiHeapReferenceInfoField field
@ JVMTI_HEAP_REFERENCE_SUPERCLASS
jvmtiReservedCallback reserved14
@ JVMTI_HEAP_REFERENCE_FIELD
unsigned int can_generate_all_class_hook_events
jobject jvmtiMonitorUsage * info_ptr
void(JNICALL * jvmtiEventVMStart)(jvmtiEnv *jvmti_env, JNIEnv *jni_env)
jvmtiEventMode jvmtiEvent jthread event_thread
@ JVMTI_VERSION_SHIFT_MINOR
@ JVMTI_ERROR_INVALID_PRIORITY
jclass jvmtiHeapObjectFilter jvmtiHeapObjectCallback heap_object_callback
mtrace This agent library can be used to track method call and return counts It uses the same java_crw_demo library used by HPROF to do BCI on all or selected classfiles loaded into the Virtual Machine It will print out a sorted list of the most heavily used classes(as determined by the number of method calls into the class) and also include the call and return counts for all methods that are called. You can use this agent library as follows
jint const jvmtiClassDefinition * class_definitions
unsigned int can_set_native_method_prefix
jvmtiHeapRootCallback jvmtiStackReferenceCallback jvmtiObjectReferenceCallback object_ref_callback
jint jvmtiStackInfo ** stack_info_ptr
@ JVMTI_ERROR_INVALID_MONITOR
jvmtiCapabilities * capabilities_ptr
jniNativeInterface ** function_table
@ JVMTI_THREAD_STATE_PARKED
@ JVMTI_CLASS_STATUS_PREPARED
unsigned int can_get_owned_monitor_stack_depth_info
@ JVMTI_EVENT_DYNAMIC_CODE_GENERATED
jclass jint jint unsigned char ** constant_pool_bytes_ptr
jvmtiHeapIterationCallback heap_iteration_callback
jvmtiReservedCallback reserved7
jvmtiIterationControl(JNICALL * jvmtiHeapObjectCallback)(jlong class_tag, jlong size, jlong *tag_ptr, void *user_data)
void(JNICALL * jvmtiEventObjectFree)(jvmtiEnv *jvmti_env, jlong tag)
void(JNICALL * jvmtiEventFieldModification)(jvmtiEnv *jvmti_env, JNIEnv *jni_env, jthread thread, jmethodID method, jlocation location, jclass field_klass, jobject object, jfieldID field, char signature_type, jvalue new_value)
@ JVMTI_HEAP_OBJECT_EITHER
jclass jfieldID jclass * declaring_class_ptr
JNIEXPORT void JNICALL Agent_OnUnload(JavaVM *vm)
@ JVMTI_ERROR_INVALID_CLASS
@ JVMTI_HEAP_REFERENCE_CLASS_LOADER
@ JVMTI_EVENT_FIELD_ACCESS
jboolean may_skip_backward
@ JVMTI_ERROR_NATIVE_METHOD
@ JVMTI_ERROR_ABSENT_INFORMATION
jint jvmtiExtensionFunctionInfo ** extensions
@ JVMTI_EVENT_MONITOR_CONTENDED_ENTER
jclass char char ** generic_ptr
jclass jfieldID char ** name_ptr
unsigned int can_generate_frame_pop_events
jvmtiArrayPrimitiveValueCallback array_primitive_value_callback
jthread const void * data
jvmtiHeapReferenceCallback heap_reference_callback
unsigned int can_redefine_any_class
unsigned int can_get_constant_pool
@ JVMTI_ERROR_UNSUPPORTED_REDEFINITION_METHOD_ADDED
jint const jthread * request_list
jint jvmtiExtensionEvent callback
jclass jboolean * is_interface_ptr
jvmtiEventMode jvmtiEvent jthread void * reserved3
const char const char * value
jint jclass const jvmtiHeapCallbacks * callbacks
jvmtiHeapReferenceInfoArray array
@ JVMTI_REFERENCE_CLASS_LOADER
jclass jvmtiHeapObjectFilter object_filter
jthreadGroup jint jthread jint jthreadGroup ** groups_ptr
@ JVMTI_HEAP_REFERENCE_ARRAY_ELEMENT
unsigned int can_get_source_debug_extension
jclass char ** signature_ptr
jmethodID jlocation location
@ JVMTI_JAVA_LANG_THREAD_STATE_WAITING
jmethodID jint jvmtiLocalVariableEntry ** table_ptr
@ JVMTI_ERROR_NAMES_DONT_MATCH
jvmtiEventGarbageCollectionFinish GarbageCollectionFinish
jvmtiReservedCallback reserved13
jint const jthread jint max_frame_count
jint jclass jobject const jvmtiHeapCallbacks const void * user_data
unsigned int can_generate_vm_object_alloc_events
@ JVMTI_ERROR_NO_MORE_FRAMES
@ JVMTI_EVENT_OBJECT_FREE
jvmtiEventClassFileLoadHook ClassFileLoadHook
@ JVMTI_THREAD_STATE_VENDOR_2
@ JVMTI_ERROR_CLASS_LOADER_UNSUPPORTED
unsigned int can_access_local_variables
@ JVMTI_JAVA_LANG_THREAD_STATE_RUNNABLE
@ JVMTI_HEAP_ROOT_JNI_LOCAL
@ JVMTI_ERROR_CIRCULAR_CLASS_DEFINITION
unsigned int can_generate_field_access_events
jvmtiReservedCallback reserved9
@ JVMTI_PRIMITIVE_TYPE_INT
heapViewer This agent library demonstrates how to get an easy view of the heap in terms of total object count and space used It uses and IterateThroughHeap() to count up all the objects of all the current loaded classes. The heap dump will happen at the event JVMTI_EVENT_VM_DEATH
jvmtiEventReserved reserved79
@ JVMTI_HEAP_REFERENCE_CLASS
jclass jint * field_count_ptr
jmethodID jint * size_ptr
jobject jint * class_count_ptr
const jniNativeInterface * function_table
@ JVMTI_HEAP_REFERENCE_OTHER
@ JVMTI_EVENT_MONITOR_CONTENDED_ENTERED
@ JVMTI_ERROR_ACCESS_DENIED
jvmtiFrameInfo * frame_buffer
@ JVMTI_HEAP_ROOT_STACK_LOCAL
void(JNICALL * jvmtiEventFramePop)(jvmtiEnv *jvmti_env, JNIEnv *jni_env, jthread thread, jmethodID method, jboolean was_popped_by_exception)
jmethodID jboolean * is_synthetic_ptr
@ JVMTI_HEAP_REFERENCE_CONSTANT_POOL
@ JVMTI_EVENT_COMPILED_METHOD_UNLOAD
jint(JNICALL * jvmtiStringPrimitiveValueCallback)(jlong class_tag, jlong size, jlong *tag_ptr, const jchar *value, jint value_length, void *user_data)
jthread jint jmethodID jlocation * location_ptr
void(JNICALL * jvmtiEventMethodExit)(jvmtiEnv *jvmti_env, JNIEnv *jni_env, jthread thread, jmethodID method, jboolean was_popped_by_exception, jvalue return_value)
jthread jvmtiThreadInfo * info_ptr
jclass char ** source_name_ptr
unsigned int can_retransform_classes
@ JVMTI_HEAP_REFERENCE_INTERFACE
void(JNICALL * jvmtiEventMonitorWaited)(jvmtiEnv *jvmti_env, JNIEnv *jni_env, jthread thread, jobject object, jboolean timed_out)
@ JVMTI_THREAD_STATE_ALIVE
jvmtiHeapObjectFilter object_filter
@ JVMTI_HEAP_FILTER_CLASS_TAGGED
void(JNICALL * jvmtiEventReserved)(void)
@ JVMTI_CLASS_STATUS_ERROR
jvmtiEventThreadEnd ThreadEnd
jint const jthread jint jvmtiStackInfo ** stack_info_ptr
@ JVMTI_EVENT_GARBAGE_COLLECTION_FINISH
jvmtiEventCompiledMethodLoad CompiledMethodLoad
jvmtiPrimitiveFieldCallback primitive_field_callback
void(JNICALL * jvmtiEventVMInit)(jvmtiEnv *jvmti_env, JNIEnv *jni_env, jthread thread)
jvmtiHeapRootCallback jvmtiStackReferenceCallback stack_ref_callback
jmethodID jboolean * is_native_ptr
jvmtiEventMonitorWait MonitorWait
jvmtiEventMonitorContendedEntered MonitorContendedEntered
@ JVMTI_EVENT_THREAD_START
void(JNICALL * jvmtiEventThreadStart)(jvmtiEnv *jvmti_env, JNIEnv *jni_env, jthread thread)
@ JVMTI_ERROR_NOT_AVAILABLE
@ JVMTI_PRIMITIVE_TYPE_CHAR
jint extension_event_index
void(JNICALL * jvmtiEventClassPrepare)(jvmtiEnv *jvmti_env, JNIEnv *jni_env, jthread thread, jclass klass)
void(JNICALL * jvmtiEventGarbageCollectionFinish)(jvmtiEnv *jvmti_env)
jthread jint jobject ** owned_monitors_ptr
unsigned int can_get_synthetic_attribute
@ JVMTI_EVENT_VM_OBJECT_ALLOC
jclass jint jfieldID ** fields_ptr
unsigned int can_generate_monitor_events
jvmtiHeapRootCallback jvmtiStackReferenceCallback jvmtiObjectReferenceCallback const void * user_data
@ JVMTI_THREAD_STATE_SLEEPING
jthread jint jint jint value
@ JVMTI_JAVA_LANG_THREAD_STATE_TIMED_WAITING
unsigned int can_get_thread_cpu_time
@ JVMTI_ERROR_CLASS_NOT_PREPARED
@ JVMTI_MIN_EVENT_TYPE_VAL
jthread jint * thread_state_ptr
@ JVMTI_HEAP_REFERENCE_JNI_LOCAL
jvmtiEventDynamicCodeGenerated DynamicCodeGenerated
jint jvmtiExtensionEventInfo ** extensions
void(JNICALL * jvmtiEventMethodEntry)(jvmtiEnv *jvmti_env, JNIEnv *jni_env, jthread thread, jmethodID method)
jvmtiError char ** name_ptr
@ JVMTI_ERROR_INVALID_OBJECT
@ JVMTI_ERROR_NULL_POINTER
@ JVMTI_JAVA_LANG_THREAD_STATE_NEW
@ JVMTI_EVENT_GARBAGE_COLLECTION_START
jthread jint jint jobject * value_ptr
jvmtiHeapReferenceInfoReserved other
@ JVMTI_REFERENCE_CONSTANT_POOL
jvmtiReservedCallback reserved10
heapViewer This agent library demonstrates how to get an easy view of the heap in terms of total object count and space used It uses GetLoadedClasses()
void(JNICALL * jvmtiEventException)(jvmtiEnv *jvmti_env, JNIEnv *jni_env, jthread thread, jmethodID method, jlocation location, jobject exception, jmethodID catch_method, jlocation catch_location)
jvmtiEventObjectFree ObjectFree
jclass jobject * classloader_ptr
jvmtiEventVMDeath VMDeath
unsigned int can_generate_resource_exhaustion_heap_events
@ JVMTI_EVENT_DATA_DUMP_REQUEST
jmethodID jclass * declaring_class_ptr
@ JVMTI_HEAP_FILTER_TAGGED
unsigned int can_tag_objects
jthread jint jint jdouble value
@ JVMTI_ERROR_TYPE_MISMATCH
@ JVMTI_HEAP_ROOT_JNI_GLOBAL
jvmtiEventDataDumpRequest DataDumpRequest
jmethodID jint * entry_count_ptr
@ JVMTI_HEAP_REFERENCE_THREAD
@ JVMTI_THREAD_STATE_IN_OBJECT_WAIT
jthreadGroup jint jthread jint * group_count_ptr
jvmtiParamTypes base_type
jvmtiIterationControl(JNICALL * jvmtiObjectReferenceCallback)(jvmtiObjectReferenceKind reference_kind, jlong class_tag, jlong size, jlong *tag_ptr, jlong referrer_tag, jint referrer_index, void *user_data)
jvmtiEventFieldAccess FieldAccess
jint jclass jobject const jvmtiHeapCallbacks * callbacks
jint(JNICALL * jvmtiArrayPrimitiveValueCallback)(jlong class_tag, jlong size, jlong *tag_ptr, jint element_count, jvmtiPrimitiveType element_type, const void *elements, void *user_data)
@ JVMTI_THREAD_STATE_WAITING
jint const jclass * classes
heapViewer This agent library demonstrates how to get an easy view of the heap in terms of total object count and space used It uses SetTag()
jclass jint jmethodID ** methods_ptr
jthread jint jvmtiMonitorStackDepthInfo ** monitor_info_ptr
@ JVMTI_THREAD_STATE_TERMINATED
@ JVMTI_THREAD_STATE_WAITING_WITH_TIMEOUT
jlong unsigned char ** mem_ptr
@ JVMTI_RESOURCE_EXHAUSTED_JAVA_HEAP
jthread jvmtiStartFunction const void * arg
@ JVMTI_THREAD_STATE_VENDOR_1
@ JVMTI_PRIMITIVE_TYPE_BYTE
@ JVMTI_EVENT_METHOD_EXIT
void(JNICALL * jvmtiEventClassFileLoadHook)(jvmtiEnv *jvmti_env, JNIEnv *jni_env, jclass class_being_redefined, jobject loader, const char *name, jobject protection_domain, jint class_data_len, const unsigned char *class_data, jint *new_class_data_len, unsigned char **new_class_data)
@ JVMTI_RESOURCE_EXHAUSTED_THREADS
@ JVMTI_HEAP_FILTER_CLASS_UNTAGGED
@ JVMTI_VERSION_MASK_MICRO
jclass jint * minor_version_ptr
jclass jvmtiHeapObjectFilter jvmtiHeapObjectCallback const void * user_data
unsigned int can_get_current_contended_monitor
jclass jint jclass ** interfaces_ptr
void(JNICALL * jvmtiEventMonitorContendedEntered)(jvmtiEnv *jvmti_env, JNIEnv *jni_env, jthread thread, jobject object)
jvmtiHeapObjectFilter jvmtiHeapObjectCallback const void * user_data
jvmtiIterationControl(JNICALL * jvmtiStackReferenceCallback)(jvmtiHeapRootKind root_kind, jlong class_tag, jlong size, jlong *tag_ptr, jlong thread_tag, jint depth, jmethodID method, jint slot, void *user_data)
@ JVMTI_THREAD_MIN_PRIORITY
unsigned int can_generate_method_exit_events
@ JVMTI_JAVA_LANG_THREAD_STATE_BLOCKED
unsigned int can_get_owned_monitor_info
jclass jfieldID jint * modifiers_ptr
@ JVMTI_HEAP_REFERENCE_STACK_LOCAL
jthread jint jobject * value_ptr
jthread jint jint max_frame_count
@ JVMTI_PRIMITIVE_TYPE_SHORT
jvmtiHeapReferenceInfoStackLocal stack_local
@ JVMTI_VERSION_MASK_INTERFACE_TYPE
@ JVMTI_MAX_EVENT_TYPE_VAL
void(JNICALL * jvmtiEventMonitorWait)(jvmtiEnv *jvmti_env, JNIEnv *jni_env, jthread thread, jobject object, jlong timeout)
@ JVMTI_ERROR_UNSUPPORTED_REDEFINITION_SCHEMA_CHANGED
@ JVMTI_REFERENCE_SIGNERS
jclass jboolean * is_modifiable_class_ptr
void(JNICALL * jvmtiEventCompiledMethodUnload)(jvmtiEnv *jvmti_env, jmethodID method, const void *code_addr)
jclass jfieldID char char char ** generic_ptr
jthreadGroup jint * thread_count_ptr
jvmtiReservedCallback reserved8
jthread jvmtiStartFunction const void jint priority
@ JVMTI_ERROR_UNSUPPORTED_REDEFINITION_CLASS_MODIFIERS_CHANGED
@ JVMTI_EVENT_MONITOR_WAIT
jvmtiHeapRootCallback heap_root_callback
void(JNICALL * jvmtiExtensionEvent)(jvmtiEnv *jvmti_env,...)
jclass jboolean * is_array_class_ptr
jobject initiating_loader
jvmtiError(JNICALL *SetEventNotificationMode)(jvmtiEnv *env
jthread jint jint jint * value_ptr
@ JVMTI_EVENT_METHOD_ENTRY
unsigned int can_pop_frame
@ JVMTI_HEAP_REFERENCE_PROTECTION_DOMAIN
jvmtiEventVMObjectAlloc VMObjectAlloc
@ JVMTI_ERROR_UNMODIFIABLE_CLASS
@ JVMTI_REFERENCE_STATIC_FIELD
jvmtiEventVMStart VMStart
jclass jint * modifiers_ptr
@ JVMTI_EVENT_SINGLE_STEP
@ JVMTI_HEAP_REFERENCE_JNI_GLOBAL
jthread jint jint jfloat * value_ptr
@ JVMTI_HEAP_ROOT_MONITOR
@ JVMTI_THREAD_STATE_RUNNABLE
unsigned int can_get_line_numbers
unsigned int can_generate_single_step_events
jvmtiEventMethodEntry MethodEntry
jvmtiEventFramePop FramePop
jvmtiHeapReferenceInfoConstantPool constant_pool
jint extension_event_index
@ JVMTI_THREAD_STATE_VENDOR_3
void(JNICALL * jvmtiEventExceptionCatch)(jvmtiEnv *jvmti_env, JNIEnv *jni_env, jthread thread, jmethodID method, jlocation location, jobject exception)
jmethodID jlocation jlocation * end_location_ptr
const char char ** value_ptr
jvmtiHeapObjectFilter jvmtiHeapObjectCallback heap_object_callback
jvmtiEventClassPrepare ClassPrepare
@ JVMTI_ERROR_INVALID_THREAD
struct _jfieldID * jfieldID
jint jthread ** threads_ptr
@ JVMTI_JAVA_LANG_THREAD_STATE_TERMINATED
void(JNICALL * jvmtiEventNativeMethodBind)(jvmtiEnv *jvmti_env, JNIEnv *jni_env, jthread thread, jmethodID method, void *address, void **new_address_ptr)
@ JVMTI_THREAD_STATE_IN_NATIVE
unsigned int can_get_monitor_info
unsigned int can_generate_native_method_bind_events
jvmtiEventNativeMethodBind NativeMethodBind
jint * extension_count_ptr
jclass char ** source_debug_extension_ptr
jthread jint * owned_monitor_count_ptr
jvmtiHeapReferenceInfoJniLocal jni_local
jthread jint jint jdouble * value_ptr
@ JVMTI_EVENT_MONITOR_WAITED
jclass jint jint * major_version_ptr
jvmtiError(JNICALL * jvmtiExtensionFunction)(jvmtiEnv *jvmti_env,...)
jthread jint jint jvmtiFrameInfo jint * count_ptr
@ JVMTI_CLASS_STATUS_ARRAY
jvmtiIterationControl(JNICALL * jvmtiHeapRootCallback)(jvmtiHeapRootKind root_kind, jlong class_tag, jlong size, jlong *tag_ptr, void *user_data)
jthreadGroup jint jthread ** threads_ptr
A Simple Chat Server Example the server takes input from a it handles the startup and handles incoming connections on the listening sockets It keeps a list of connected client and provides methods for sending a message to them Client represents a connected it provides methods for reading writing from to the underlying socket It also contains a buffer of input read from the user DataReader provides the interface of the two states a user can be in Waiting for a name(and not receiving any messages while doing so, implemented by NameReader) and waiting for messages from the user(implemented by MessageReader). ClientReader contains the "main loop" for a connected client. NameReader is the initial state for a new client
@ JVMTI_ERROR_INVALID_LOCATION
const jvmtiCapabilities * capabilities_ptr
jmethodID jint unsigned char ** bytecodes_ptr
jobject jint jclass ** classes_ptr
jthread jint * monitor_info_count_ptr
const struct jvmtiInterface_1_ * jvmtiEnv
@ JVMTI_THREAD_STATE_SUSPENDED
void(JNICALL * jvmtiEventMonitorContendedEnter)(jvmtiEnv *jvmti_env, JNIEnv *jni_env, jthread thread, jobject object)
void(JNICALL * jvmtiEventResourceExhausted)(jvmtiEnv *jvmti_env, JNIEnv *jni_env, jint flags, const void *reserved, const char *description)
@ JVMTI_ERROR_THREAD_SUSPENDED
@ JVMTI_ERROR_ILLEGAL_ARGUMENT
unsigned int can_generate_compiled_method_load_events
jvmtiReservedCallback reserved11