随笔分类 - JVM
摘要:什么是垃圾? 垃圾是指在运行程序中没有任何指针指向的对象,这个对象就是垃圾。 如果不及时对内存中的垃圾进行清理,那么,这些垃圾对象所占的内存空间会一直保留到应用程序结束,被保留的空间无法被其他对象使用。甚至导致内存溢出。 标记阶段:对象存活判断 垃圾标记阶段:堆里存放着几乎所有的Java对象实例,在
阅读全文
摘要:创建对象的方式? 1.new 2.Class的newInstance() 3.Constructor的newInstance(xxx) 4.使用clone() 5.使用反序列化 6.第三方库Objenesis 创建对象的步骤? 1.判断对象对应的类是否加载、链接、初始化 2.为对象分配内存 3.处理
阅读全文
摘要:方法区存储什么? 存储已被虚拟机加载的类型信息、常量、静态变量、即时编译期编译后的代码缓存等。 类型信息(类class、接口interface、枚举enum、注解annotation): 这个类型的完整有效名称(包名.类名) 这个类型直接父类的完整有效名(对于interface或是java.lang
阅读全文
摘要:堆是分配对象存储的唯一选择吗? 不是,在Java虚拟机中,对象在Java堆中分配内存的,这是一个普遍的常识。但是,有一种特殊情况,那就是如果经过逃逸分析后发现,一个对象并没有逃逸出方法的话,那么就可能被优化成栈上分配。 就是方法的创建在方法里面,也没有通过返回值返回出去,从而不会造成引用传递,所以这
阅读全文
摘要:堆: 一个main方法对应一个进程,一个进程对应一个JVM实例,也就是运行时数据区(Runtime Data Area),对应只有一个方法区和堆。但一个进程可以有多个线程,每个线程对应一个程序计数器、本地方法栈、虚拟机栈。在线程中,共享方法区和堆。 -Xms10m 用来设置对空间的初始内存大小 -X
阅读全文
摘要:Java虚拟机:就是二进制字节码的运行环境,负责装载字节码到其内部,解释/编译为对应平台上的机器指令执行。每一条Java指令,java虚拟机规范中都有详细定义。 特点:一次编译,到处运行;自动内存管理;自动垃圾回收功能。 JVM的整体结构 Java代码执行流程 JVM的生命周期 1.虚拟机的启动:通
阅读全文