
JVM
萧曵 丶
谦逊,勤恳.
展开
-
《Java虚拟机原理图解》 1.2、Class文件中的常量池详解(下)
NO9.类中引用到的field字段在常量池中是怎样描述的?(CONSTANT_Fieldref_info, CONSTANT_Name_Type_info) 一般而言,我们在定义类的过程中会定义一些 field 字段,然后会在这个类的其他地方(如方法中)使用到它。有可能我们在类的方法中只使用field字段一次,也有可能我们会在类定义的方法中使用它很多很多次。 举一个转载 2018-01-23 21:36:26 · 235 阅读 · 0 评论 -
你真的理解Java的按引用传递吗?
首先我们来看下面这段代码:public class Test1 { String a = "123"; public static void change(Test1 test) { test.a="abc"; } public static void main(String[] args) { Test1 test1=ne...原创 2018-04-20 11:39:08 · 183 阅读 · 0 评论 -
对Java Serializable(序列化)的理解和总结
理解Java对象序列化(1)1、序列化是干什么的? 简单说就是为了保存在内存中的各种对象的状态(也就是实例变量,不是方法),并且可以把保存的对象状态再读出来。虽然你可以用你自己的各种各样的方法来保存object states,但是Java给你提供一种应该比你自己好的保存对象状态的机制,那就是序列化。2、什么情况下需要序列化 a)当你想把的内存中的对象状态保存到一个文件中或者...原创 2018-04-04 13:28:01 · 164 阅读 · 0 评论 -
什么是jvm?
说明:做java开发的几乎都知道jvm这个名词,但是由于jvm对实际的简单开发的来说关联的还是不多,一般工作个一两年(当然不包括爱学习的及专门做性能优化的什么的),很少有人能很好的去学习及理解什么是jvm,以及弄清楚jvm的工作原理,个人认为这块还是非常有必要去认真了解及学习的,特别是刚入门或入门不久的java开发来说,这是java的基石。JVM(Java Virtual Machine,Java...转载 2018-03-28 09:16:23 · 182 阅读 · 0 评论 -
堆和栈的概念和区别
在说堆和栈之前,我们先说一下JVM(虚拟机)内存的划分: Java程序在运行时都要开辟空间,任何软件在运行时都要在内存中开辟空间,Java虚拟机运行时也是要开辟空间的。JVM运行时在内存中开辟一片内存区域,启动时在自己的内存区域中进行更细致的划分,因为虚拟机中每一片内存处理的方式都不同,所以要单独进行管理。 JVM内存的划分有五片: 1. 寄存器; ...转载 2018-03-11 00:48:05 · 176 阅读 · 0 评论 -
图解Java 垃圾回收机制
摘要: Java技术体系中所提倡的 自动内存管理 最终可以归结为自动化地解决了两个问题:给对象分配内存 以及 回收分配给对象的内存,而且这两个问题针对的内存区域就是Java内存模型中的 堆区。关于对象分配内存问题,笔者的博文《JVM 内存模型概述》已经阐述了 如何划分可用空间及其涉及到的线程安全问题,本文将结合垃圾回收策略进一步给出内存分配规则。垃圾回收机制的引入可以有效的防止内存泄转载 2018-01-29 22:19:01 · 203 阅读 · 0 评论 -
深入理解Java对象的创建过程:类的初始化与实例化
摘要: 在Java中,一个对象在可以被使用之前必须要被正确地初始化,这一点是Java规范规定的。在实例化一个对象时,JVM首先会检查相关类型是否已经加载并初始化,如果没有,则JVM立即进行加载并调用类构造器完成类的初始化。在类初始化过程中或初始化完毕后,根据具体情况才会去对类进行实例化。本文试图对JVM执行类初始化和实例化的过程做一个详细深入地介绍,以便从Java虚拟机的角度清晰解剖一个转载 2018-01-29 22:14:25 · 414 阅读 · 0 评论 -
Java 反射机制
在我们使用形如 ClassName object = new ClassName(); 的语句进行创建实例的时候,我们默认 ClassName 已经在系统内存在的了,所以直接使用new 的方式进行创建。事实上,在启动虚拟机的时候,我们定义在系统内的类通过类的加载器(class loader)加载到系统内。所以当系统运行的时候,我们就可以使用该类。 有时候,在系统运行的转载 2018-02-01 21:46:19 · 239 阅读 · 0 评论 -
《Java虚拟机原理图解》1.5、 class文件中的方法表集合--method方法在class文件中是怎样组织的
0. 前言 了解JVM虚拟机原理是每一个Java程序员修炼的必经之路。但是由于JVM虚拟机中有很多的东西讲述的比较宽泛,在当前接触到的关于JVM虚拟机原理的教程或者博客中,绝大部分都是充斥的文字性的描述,很难给人以形象化的认知,看完之后感觉还是稀里糊涂的。 感于以上的种种,我打算把我在学习JVM虚拟机的过程中学到的东西,结合自己的理解,总结成《J转载 2018-01-24 00:17:30 · 230 阅读 · 0 评论 -
《Java虚拟机原理图解》 1.2、Class文件中的常量池详解(上)
NO1.常量池在class文件的什么位置? 我的上一篇文章《Java虚拟机原理图解》 1、class文件基本组织结构中已经提到了class的文件结构,在class文件中的魔数、副版本号、主版本之后,紧接着就是常量池的数据区域了,如下图用红线包括的位置: 知道了常量池的位置后,然后让我们来揭秘常量池里究竟有什么东西吧~ NO2.常转载 2018-01-24 00:17:25 · 252 阅读 · 0 评论 -
《Java虚拟机原理图解》1.4 class文件中的字段表集合--field字段在class文件中是怎样组织的
0.前言 了解JVM虚拟机原理是每一个Java程序员修炼的必经之路。但是由于JVM虚拟机中有很多的东西讲述的比较宽泛,在当前接触到的关于JVM虚拟机原理的教程或者博客中,绝大部分都是充斥的文字性的描述,很难给人以形象化的认知,看完之后感觉还是稀里糊涂的。 感于以上的种种,我打算把我在学习JVM虚拟机的过程中学到的东西,结合自己的理解,总结成《转载 2018-01-23 21:36:51 · 240 阅读 · 0 评论 -
《Java虚拟机原理图解》1.3、class文件中的访问标志、类索引、父类索引、接口索引集合
讲完了class文件中的常量池,我们就相当于克服了class文件中最麻烦的模块了。现在,我们来看一下class文件中紧接着常量池后面的几个东西:访问标志、类索引、父类索引、接口索引集合。1. 访问标志、类索引、父类索引、接口索引集合 在class文件中的位置 好,让我们来一一击破它们,看看它们到底是什么东西。2. 访问标志(access_flags)转载 2018-01-23 21:36:36 · 187 阅读 · 0 评论 -
Java虚拟机解析篇之---内存模型
在这部分知识点中有一本书不得不推荐:《深入理解Java虚拟机》,现在已经是第二版了。这本书就从头开始详细介绍了Java整个虚拟机的模型以及Java的类文件结构,加载机制等。这里大部分的知识点都是可以在这本书中找到的,当然我是主要还是借鉴这本书中的很多内容的。下面就不多说了,进入主题吧。首先来看一下Java中的内存模型图:第一、程序计数器(PC)程序计数器(Program Counter Regis...转载 2018-05-02 14:38:00 · 160 阅读 · 0 评论