类通过(*env)->FindClass,也就是hotspot/src/share/vm/prims/jni.cpp的jni_FindClass来执行,在里面首先找到loader实例,之后进入find_class_from_class_loader,通过SystemDictionary::resolve_or_fail来解释类文件。在里面区分两种情况FieldType::is_array,是true调用resolve_array_class_or_null,否则调用resolve_instance_class_or_null。  &nbs ...
    在java里面创建线程new Thread().start(),在这里面先调用Thread.java的init()进行了初始化,然后调用了本地方法 start0(),这个方法实际上调用了hotspot\src\share\vm\prims\jvm.cpp文件里的JVM_StartThread方法。 在上面方法里new JavaThread(),这是jvm里面区分的线程类型。创建时候传进入一个函数指针thread_entry,这个函数将调用 用户实现的run()方法。在JVM_StartThread()最后通过Thread::s ...
  • 11:03
  • 浏览 (13)
  • 评论 (0)
    学习openJdk,主要是学习c++的面向对象思想,及开发大程序的思路。这段时间浏览了不少其中的代码,还是只能管中窥豹,没能从总体上领悟。在此想起曾在www.jdon.com上面看到有人大力鼓吹什么模式思维,宣扬什么数据库已死,算法什么不重要,大力排斥数据结构,感觉按他说的懂模式便懂了计算机。偶自认为略懂模式,模式只不过是软件公理(增加间接层解决问题)的招式提炼,用这么大力鼓吹吗?采用间接层解决问题的思路由来已久,在openjdk中模式也应用很多,但偶懂模式还是看不懂其总体思路,为何?偶的功力不够也,对计算机的底层、算法认识不足,没能领悟大师们的思路。不打 ...
  • 11:05
  • 浏览 (35)
  • 评论 (0)
  openJdk文件数众多,在那先入手?我是从java.c开始,我采用的sourceInside阅读器,由于这是学习,本着能看懂多少是多少的态度,不必拘泥于各个细节,先从os/linux/laucher/java.c看起。   在java.c的main函数内调用LoadJavaVm,具体创建vm的函数为JNI_CreateJavaVM,其采用函数指针,而不采用直接调用,没看出来有什么好处,为什么多一个间接层?为了程序的可移植?在此先不管它。   JNI_CreateJavaVM函数内部创建虚拟机线程,由于程序考虑多系统的移植,故抽取了一个间接层Threads ...
  • 17:22
  • 浏览 (26)
  • 评论 (0)
 为记录学习openJdk的学习过程,在此开博  
  • 16:47
  • 浏览 (28)
  • 评论 (0)
xieyj
搜索本博客
博客分类
最近加入圈子
最新评论