jvm反射和动态代理

jvm反射和动态代理

ID:8809666

大小:57.50 KB

页数:6页

时间:2018-04-08

jvm反射和动态代理_第1页
jvm反射和动态代理_第2页
jvm反射和动态代理_第3页
jvm反射和动态代理_第4页
jvm反射和动态代理_第5页
资源描述:

《jvm反射和动态代理》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、(从csdn的blog转来) Java程序的工作机制:Java对象都以单独的class文件存在,java虚拟机将其载入并执行其虚拟机指令。Java虚拟机查找这些java对象:java虚拟机根据classpath来查找java对象,而虚拟机的classpath又分为三层:bootstrap:sun.boot.class.pathextension:java.ext.dirsapplication:java.class.path三个classpath各有对应的classloader。由上而下形成父子关系当程序中调

2、用new指令,或者ClassLoader.load方法时。其顺序如下:1.      首先查看application的classloader中是否已有对应的class缓存,如果有则返回,并根据class分配内存。如果没有,接下一步。2.      首先查看extension的classloader中是否已有对应的class缓存,如果有则返回,并根据class分配内存。如果没有,接下一步。3.      首先查看bootstrap的classloader中是否已有对应的class缓存,如果有则返回,并根据cla

3、ss分配内存。如果没有,接下一步。4.      由bootstrap的classloader在其classpath中试图加载该class,如果有,则将该class放入cache中,并返回。如果没有,接下一步。5.      由extension的classloader在其classpath中试图加载该class,如果有,则将该class放入cache中,并返回。如果没有,接下一步。6.      由application的classloader在其classpath中试图加载该class,如果有,则将该cl

4、ass放入cache中,并返回。如果没有,则抛出ClassNotFound的exception。Java虚拟机加载这些java对象:每个java虚拟机都在其启动时产生一个唯一的classheap,并把所有的classinstance都分配在其中。其中每个类实例的信息又分两部分,fields域和methods域。每个类实例各自拥有fields,但同一个类的不同实例共享methods反射JVM对反射的处理简单例子代码:importjava.lang.reflect.InvocationHandler;import

5、java.lang.reflect.Method;importjava.lang.reflect.InvocationTargetException;importjava.io.IOException;publicclassMain{publicstaticvoidmain(String[]args){TempImplt1=newTempImpl("temp1");try{Methodt1Talk=t1.getClass().getMethod("Talk",newClass[0]);t1Talk.invok

6、e(t1,null);}catch(NoSuchMethodExceptione){e.printStackTrace();//TochangebodyofcatchstatementuseFile

7、Settings

8、FileTemplates.}catch(IllegalAccessExceptione){e.printStackTrace();//TochangebodyofcatchstatementuseFile

9、Settings

10、FileTemplates.}catch(InvocationTarg

11、etExceptione){e.printStackTrace();//TochangebodyofcatchstatementuseFile

12、Settings

13、FileTemplates.}try{System.in.read();}catch(IOExceptione){e.printStackTrace();//TochangebodyofcatchstatementuseFile

14、Settings

15、FileTemplates.}}}复杂例子代码:importjava.lang.reflect.Invo

16、cationHandler;importjava.lang.reflect.Method;importjava.lang.reflect.InvocationTargetException;importjava.io.IOException;publicclassMain{publicstaticvoidmain(String[]args){TempImplt1=newTempImpl("temp1

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。