本文参考《深入理解java虚拟机》 虚拟机加载类的过程: java源程序被编译器编译成class文件后,会被虚拟机的类加载器加载,加载完成后,会为class文件在内存中开辟一块空间用来存储class文件对象,之后对class文件进行校验,准备,解析和初始化,最终形成能被虚拟机使用的java类型,这叫 ...
分类:
其他好文 时间:
2018-09-30 20:07:31
阅读次数:
112
Java虚拟机内存区域 Java虚拟机所管理的内存由以下五个运行时数据区域组成。 1.程序计数器 可以把程序计数器看作当前线程所执行的字节码的行号指示器。在虚拟机的概念模型里,字节码解释器工作时就是通过改变这个计数器的值来选择下一条需要执行的字节码指令。 由于JVM的多线程是通过线程轮流切换并分配处 ...
分类:
编程语言 时间:
2018-09-29 21:30:06
阅读次数:
136
近期开始学习JVM,看的是周老师的《深入理解Java虚拟机》,打算先自己编译个JDK来提升对JVM的兴趣。本文分三部分来描述编译OpenJDK的过程,分别是编译前准备工作、构建编译环境、进行编译,在这三部分内容中顺带把趟的坑一起说明下。 一、编译前准备工作 1.1 安装Linux环境 编译OpenJ ...
分类:
系统相关 时间:
2018-09-24 18:26:20
阅读次数:
539
本文来自 唐大麦 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/soonfly/article/details/70147205?utm_source=copy 在翻《深入理解Java虚拟机》的书时,又看到了2-7的 String.intern()返回引用的测试。 ...
分类:
其他好文 时间:
2018-09-23 19:14:55
阅读次数:
168
解释了java中对象的在内存中的模型,学习了对象的内存模型后,对理解多态、参数传递等的理解都有帮助。 前言:这是一篇关于JVM内存区域的文章,由网上一些有关这方面的文章和《深入理解 Java虚拟机》整理而来,所以会有些类同的地方,也不能保证我自己写的比其他网上的和书本上的要好,也不可能会这样。写博客... ...
分类:
其他好文 时间:
2018-09-22 22:27:17
阅读次数:
235
最近开始肝第三次<深入理解Java虚拟机-JVM高级特性与最佳实践>, 每次都是看了就忘, 所以这次准备写点东西记录下来. 个人感觉这本书写的是真的不错, 不同的阶段看有不同的体验, 每次都有很多收获. 话不多说, 直接进入正题. 什么是JVM Java Vitual Machine, 是一个运行J ...
分类:
其他好文 时间:
2018-09-13 23:59:51
阅读次数:
301
一、根搜索算法: (1)定义:通过一系列名为"GC Roots"的对象作为起点,从这些起点开始向下搜索,搜索走过的路径称为引用链,当一个对象到GC Roots没有任何引用链相连的时候,则证明此对象不可用 (2)GC Roots对象包括这几种:虚拟机栈中引用的对象;方法区中的类静态属性引用的对象;方法 ...
分类:
编程语言 时间:
2018-09-13 14:05:02
阅读次数:
179
1.JDK:java程序设计语言、java虚拟机、javaAPI 二、自动内存管理机制 1.运行时数据区域: (1)java虚拟机在执行java程序的过程中会把所管理的内存划分为若干个不同的数据区域。这些区域有着各自的用途,以及创建和销毁的时间,有些区域随着虚拟机的启动而存在,有些区域则是依赖用户线 ...
分类:
编程语言 时间:
2018-09-12 13:08:52
阅读次数:
140
一次偶然,博主在浏览docs.oracle.com/javase的时候发现了《Hotspot虚拟机垃圾收集调优指南》这篇文档。内心百感交集,之前在看完了周志明的《深入理解Java虚拟机 JVM高级特性与最佳实践(第二版)》也有比较长篇的学习记录博客发表。不过那也是基于JDK7进行编写的。后续的8、9 ...
分类:
其他好文 时间:
2018-09-11 18:42:06
阅读次数:
185
java内存区域和内存溢出异常 划分内存: java 虚拟机在执行 java 程序时将内存划分为 5 个部分。线程私有的有成员计数器、虚拟机栈、本地方法栈,线程共享的有方法区、堆。 程序计数器储存字节码行号,此区域未规定任何内存溢出异常。虚拟机栈储存栈帧,用于java 方法的运行。本地方法栈用于 n ...
分类:
编程语言 时间:
2018-09-02 02:13:29
阅读次数:
161