Klass

JVM源码实战 - OOP-Klass模型

馋奶兔 提交于 2019-12-05 21:05:15
> Github原文链接 1 OOP-Klass(Ordinary Object Pointer)模型 OOP-Klass模型用来描述class的属性和行为 设计为OOP和Klass两部分是因为不希望每个对象都有一个C ++ vtbl指针, 因此,普通的oops没有任何虚拟功能。 相反,他们将所有“虚拟”函数转发到它们的klass,它具有vtbl并根据对象的实际类型执行C ++调度。 1.1 OOP oopDesc是对象类的最高父类。 {name}Desc类描述了Java对象的格式,可从C++访问这些字段 路径: /hotspot/share/oops/oop.hpp 完整的类层次结构,请阅读 src/hotspot/share/oops/oopsHierarchy.hpp OOP体系 1.2 Klass Klass体系 Klass对象提供 语言级别的类对象(方法字典等) 为对象提供虚拟机调度行为 class Klass : public Metadata { friend class VMStructs; friend class JVMCIVMStructs; protected: // 如果添加指向任何元数据对象的新字段,则必须将此字段添加到Klass :: metaspace_pointers_do() // 注意:在klass结构的起始处将常用字段放在一起

Java 之 synchronized 详解

谁说我不能喝 提交于 2019-12-04 18:33:19
一、概念 synchronized 是 Java 中的关键字,是利用锁的机制来实现同步的。 锁机制有如下两种特性: 互斥性:即在同一时间只允许一个线程持有某个对象锁,通过这种特性来实现多线程中的协调机制,这样在同一时间只有一个线程对需同步的代码块(复合操作)进行访问。互斥性我们也往往称为操作的原子性。 可见性:必须确保在锁被释放之前,对共享变量所做的修改,对于随后获得该锁的另一个线程是可见的(即在获得锁时应获得最新共享变量的值),否则另一个线程可能是在本地缓存的某个副本上继续操作从而引起不一致。 二、对象锁和类锁 1. 对象锁 在 Java 中,每个对象都会有一个 monitor 对象,这个对象其实就是 Java 对象的锁,通常会被称为“内置锁”或“对象锁”。类的对象可以有多个,所以每个对象有其独立的对象锁,互不干扰。 2. 类锁 在 Java 中,针对每个类也有一个锁,可以称为“类锁”,类锁实际上是通过对象锁实现的,即类的 Class 对象锁。每个类只有一个 Class 对象,所以每个类只有一个类锁。 三、synchronized 的用法分类 synchronized 的用法可以从两个维度上面分类: 1. 根据修饰对象分类 synchronized 可以修饰方法和代码块 修饰代码块 synchronized(this|object) {} synchronized(类.class

ubuntu : Sublime Text 3无法输入中文

痞子三分冷 提交于 2019-11-30 01:50:59
1).保存下面的代码到文件sublime_imfix.c(位于~目录) #include <gtk/gtkimcontext.h> void gtk_im_context_set_client_window (GtkIMContext *context, GdkWindow *window) { GtkIMContextClass *klass; g_return_if_fail (GTK_IS_IM_CONTEXT (context)); klass = GTK_IM_CONTEXT_GET_CLASS (context); if (klass->set_client_window) klass->set_client_window (context, window); g_object_set_data(G_OBJECT(context),"window",window); if(!GDK_IS_WINDOW (window)) return; int width = gdk_window_get_width(window); int height = gdk_window_get_height(window); if(width != 0 && height !=0) gtk_im_context_focus_in(context); } 安装 C/C++ 的编译环境和

JVM源码实战

。_饼干妹妹 提交于 2019-11-29 05:48:19
> Github原文链接 1 OOP-Klass(Ordinary Object Pointer)模型 OOP-Klass模型用来描述class的属性和行为 设计为OOP和Klass两部分是因为不希望每个对象都有一个C ++ vtbl指针, 因此,普通的oops没有任何虚拟功能。 相反,他们将所有“虚拟”函数转发到它们的klass,它具有vtbl并根据对象的实际类型执行C ++调度。 1.1 OOP oopDesc是对象类的最高父类。 {name}Desc类描述了Java对象的格式,可从C++访问这些字段 路径: /hotspot/share/oops/oop.hpp 完整的类层次结构,请阅读 src/hotspot/share/oops/oopsHierarchy.hpp OOP体系 1.2 Klass Klass体系 Klass对象提供 语言级别的类对象(方法字典等) 为对象提供虚拟机调度行为 class Klass : public Metadata { friend class VMStructs; friend class JVMCIVMStructs; protected: // 如果添加指向任何元数据对象的新字段,则必须将此字段添加到Klass :: metaspace_pointers_do() // 注意:在klass结构的起始处将常用字段放在一起