#include using namespace std;#define DESTROY_POINTER(ptr) if (ptr) { delete ptr; ptr = NULL; } class Product{public: virtual void Action()=0;};clas...
分类:
其他好文 时间:
2014-12-11 12:17:14
阅读次数:
177
13.4深拷贝和浅拷贝有什么区别,如何使用?解答浅拷贝并不复制数据,只复制指向数据的指针,因此是多个指针指向同一份数据。 深拷贝会复制原始数据,每个指针指向一份独立的数据。通过下面的代码, 可以清楚地看出它们的区别:struct Test{ char *ptr;};void shallow_c...
分类:
编程语言 时间:
2014-12-09 22:49:53
阅读次数:
154
引入:上文讨论了Agent如何利用环境指针访问VM(管理类),这里讨论如何管理对象。分类9:对象管理a.GetObjectSize.获取对象的大小,jvmtiError
GetObjectSize(jvmtiEnv*env,
jobjectobject,
jlong*size_ptr)注意,这不是真实大小,这只是从对象的定义代码中获得的一个预估值。..
分类:
其他好文 时间:
2014-12-09 15:56:46
阅读次数:
182
引入:上文中提到Agent如何利用环境指针访问VM的(Watch)功能,这里主要讲解如何去管理类的。分类9:管理类a.GetLoadedClasses.获得虚拟机中所有被加载的类的数组。jvmtiError
GetLoadedClasses(jvmtiEnv*env,
jint*class_count_ptr,
jclass**classes_ptr)从返回值可以看出,cl..
分类:
其他好文 时间:
2014-12-09 15:56:45
阅读次数:
243
引入:上文中我们已经探讨了Agent如何利用环境指针访问VM(对象级的操作),现在我们讨论让Agent利用环境指针访问类的字段。分类10:字段访问a.GetFieldName.获取某类的某字段名字jvmtiError
GetFieldName(jvmtiEnv*env,
jclassklass,
jfieldIDfield,
char**name_ptr,
char**si..
分类:
其他好文 时间:
2014-12-09 15:53:02
阅读次数:
216
引入:上文中我们讲解了Agent如何利用环境指针来访问VM的字段访问部分,现在来讲解方法访问部分。分类11:方法访问a.GetMethodName.获取方法名字和签名jvmtiError
GetMethodName(jvmtiEnv*env,
jmethodIDmethod,
char**name_ptr,
char**signature_ptr,
char**generic_ptr)b.Get..
分类:
其他好文 时间:
2014-12-09 15:51:20
阅读次数:
201
看下面的例子:例十八:char s = 'a';int *ptr;ptr = (int *)&s;*ptr = 1298;指针ptr 是一个int *类型的指针,它指向的类型是int。它指向的地址就是s 的首地址。在32 位程序中,s 占一个字节,int 类型占四个字节。最后一条语句不但改变了s 所...
分类:
其他好文 时间:
2014-12-09 15:30:23
阅读次数:
163
在谈论指针之前,永远记住指针的四要素:指针的类型,指针所指向的类型,指针指向的内存区,指针自身占据的内存。1. 指针的类型:从语法的角度看,你只要把指针声明语句里的指针名字去掉,剩下的部分就是这个指针的类型。这是指针本身所具有的类型。让我们看看例一中各个指针的类型:1 int*ptr;//指针的类型...
分类:
其他好文 时间:
2014-12-09 13:39:47
阅读次数:
138
引入:上篇文章讲解了分类:内存管理,现在讲线程类操作的接口。分类2:线程类操作a.GetThreadState.获取线程状态jvmtiError
GetThreadState(jvmtiEnv*env,
jthreadthread,
jint*thread_state_ptr)大家都知道线程有很多种状态,比如Alive,Terminated,Runnable,等待进入Synchron..
分类:
编程语言 时间:
2014-12-09 02:00:53
阅读次数:
232
引入:我们在前面说到JVMTI的客户端Agent,又提到Agent通过环境指针来访问VM。这里就来看看环境指针到底有多大的访问VM的能力。分类1:内存管理a.Allocate.分配内存jvmtiError
Allocate(jvmtiEnv*env,
jlongsize,
unsignedchar**mem_ptr)size:分配的字节数.mem_ptr:分配内存的首..
分类:
其他好文 时间:
2014-12-09 01:59:47
阅读次数:
247