摘要:
一.概述定义:虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的java类型。类加载和连接的过程都是在运行期间完成的。二. 类的加载方式1):本地编译好的class中直接加载2):网络加载:java.net.URLClassLoader... 阅读全文
摘要:
大部分内容来源网络,整理一下,留个底。问:堆和栈有什么区别?答:堆是存放对象的,但是对象内的临时变量是存在栈内存中,如例子中的methodVar是在运行期存放到栈中的。 栈是跟随线程的,有线程就有栈,堆是跟随JVM的,有JVM就有堆内存。问: 堆内存中到底存在着什么东西?答:对象,包括对象变量以及对... 阅读全文
摘要:
1.“开-闭”原则(OCP) Software entities should be open for extension, but closed for modification. 对扩展开放,对修改封闭。2.里氏代换原则(LSP) 凡是基类适用的地方,子类一定适用。3.依赖倒转原则(DIP) 要... 阅读全文
摘要:
Java虚拟机管理的内存包括以下几个运行时数据区域:1.程序计数器: 程序计数器是一块比较小的内存空间,是当前线程执行的字节码行号指示器。Java多线程是通过线程轮流切换来实现的,所以每个线程都有一个自己独立的程序计数器,各个线程的程序计数器互补干扰。2.Java虚拟机栈 Java虚拟机栈描述的... 阅读全文
摘要:
类从加载到虚拟机到卸载,它的整个生命周期包括:加载(Loading),验证(Validation),准备(Preparation),解析(Resolution),初始化(Initialization),使用(Using)和卸载(Unloading)。其中,验证、准备和解析部分被称为连接(Linkin... 阅读全文
摘要:
在说垃圾回收算法之前,先谈谈JVM怎样确定哪些对象是“垃圾”。1.引用计数器算法:引用计数器算法是给每个对象设置一个计数器,当有地方引用这个对象的时候,计数器+1,当引用失效的时候,计数器-1,当计数器为0的时候,JVM就认为对象不再被使用,是“垃圾”了。引用计数器实现简单,效率高;但是不能解决循环... 阅读全文