随笔分类 - Java虚拟机
参考深入理解Java虚拟机
摘要:说下对象的创建方法?对象的内存布局?对象的访问定位? 四种不同的方法创建对象 1、用new语句创建对象,这是最常用的创建对象的方式; 2、调用对象的clone方法。 MyObject obj =new MyObject(); MyObject objs= obj.clone(); 使用clone方法
阅读全文
摘要:1.线程安全:当多个线程访问一个对象时,如果不用考虑这些线程在运行时环境下的调度和交替执行,也不需要进行额外的同步,或者在调用方法进行任何其他的协调操作,调用这个对象的行为都可以获得正确的结果,那这个对象就是线程安全的。 2.Java语言中的线程安全 根据线程安全的安全程度由强到弱来排序,我们可以把
阅读全文
摘要:线程是比进程更轻量级的调度执行单位,线程的引入可以把一个进程的资源分配和执行调度分开,各个线程可以共享进程资源,又可以独立调度。 每个已经执行start()方法且还未结束的java.lang.Thread类的实例就代表了一个线程。 1.线程的实现(三种):使用内核线程实现、使用用户线程实现、使用用户
阅读全文
摘要:Java内存模型(JMM) Java内存模型规定了所有的变量都存储在主内存中。每条线程都有自己的工作内存,线程对变量的所有操作都必须在工作内存中进行,而不能直接读写主内存中的变量。不同的线程之间也无法直接访问对方工作内存中的变量,线程间变量值的传递均需通过主内存来完成。 内存间交互操作:Java内存
阅读全文
摘要:虚拟机类加载机制 虚拟机把描述类的数据从class文件加载到内存,并对数据进行校验、转换、解析和初始化,最终形成可已被虚拟机直接使用的Java类型。 在Java语言里,类型的加载、连接和初始化过程都是在程序运行期间完成的。 类加载的时机 类被加载到虚拟机后它的生命周期包括:加载、验证、准备、解析、初
阅读全文
摘要:一、GC 第一步:判断对象是否已死?有两种方法:第一种是引用计数法,即给对象添加一个引用计数器,当被引用时,计数器就+1;当引用失效时,就-1;当计数器为0时,代表对象没有被引用。但是计数器的缺点就是:对象之间相互引用时导致计数器不为零,无法被回收。第二种方法是可达性分析法,即通过定义一系列的GC
阅读全文
摘要:一、运行时数据区域 Java程序的执行流程:首先 .java源代码文件会被Java编译器编译为字节码文件(.class后缀),然后由JVM中的类加载器加载各个类的字节码文件,加载完毕之后,交由JVM执行引擎(包括即时编译器、垃圾收集器)执行。在整个程序执行过程中,JVM会用一段空间来存储程序执行期间
阅读全文

浙公网安备 33010602011771号