聊聊Java 虚拟机的“那点事”】的更多相关文章

本文的使用方法: 这篇文章是一个总结性质的文章,是我在看完<深入理解 Java 虚拟机>后写的(里面可能会有些不准确的地方,欢迎大家指出),本文从头读到尾就是一个虚拟机大部分知识点的框架,就像一颗搜索树一样,我们想要了解哪一部分知识,就从根节点开始搜索,直到找到我们想要了解的知识所在的叶节点或者子树.不过如果把所有的知识都在一篇文章中列出来那文章就太长啦,很容易把握不住整体框架,所以本文中对于知识点的详细介绍都以链接的形式给出,大家可以通过本文回忆 JVM 相关的知识,遇到想不起来的点可以点开…
<深入理解java虚拟机> 读书感悟 作者:淮左白衣 --------------写于2018年4月9日17:44:48 关于java虚拟机内存的那些事之程序计数器 关于java虚拟机内存的那些事之程序计数器 什么是程序计数器? 有什么特点 为什么具有这些特点 参考: 什么是程序计数器? 程序计数器是一块 较小 的内存空间,它可以看做是当前线程所执行的字节码的 行号指示器 :在虚拟机的概念模型里(仅仅是概念模型,各种虚拟机可能会通过一些更高效的方式去实现),字节码解释器工作时,就是通过改变这个…
<深入理解 java 虚拟机> 读书扩展 作者:淮左白衣 写于 2018年4月13日21:26:05 目录 方法区 图例(方法区中都保存什么) 类型信息 类型的常量池 (即运行时常量池) 字段信息 方法信息 类变量(即static变量) 对类加载器的引用 对Class类的引用 方法表 (摘抄)JVM如何使用方法区里面的数据的 参考: Java方法区 方法区 保存在着被加载过的每一个类的信息:这些信息由类加载器在加载类的时候,从类的源文件中抽取出来:static变量信息也保存在方法区中: 可以看…
<深入理解 java 虚拟机> 读书扩展 作者:淮左白衣 写于 2018年4月13日16:26:51 目录 文章目录 java虚拟机栈是什么 特点 栈帧 局部变量表 什么时候抛出 `StackOverflowError` .`OutOfMemoryError` 异常 后记:本地方法栈 java虚拟机栈是什么 平时大家在说 JVM内存 的时候,最常见的说法就是:堆.栈,这种说法很浅显,这里大家理解的栈,就是我们今天讲的java虚拟机栈,或者可能只是虚拟机栈中的 局部变量表 部分: 特点 线程私有…
最近有个读者在苦恼一件事,那就是有大公司在挖他,他要不要从所在的小公司,跳槽到大公司,前提是两家公司的待遇基本一致.由这个问题结合自己多年的工作经验,来谈谈java工程师要不要跳槽,何时跳槽,怎么跳槽等问题. 要不要跳槽 有句话叫"铁打的营盘流水的兵",这句话放在职场中同样适合,我们中的大多数都是打工人,也就是说在职场中跳槽是必然的,下面分析下跳槽的好处, 可以获得更优厚的待遇.都知道跳一次槽工资待遇至少要提升20%--30%,如果不是这样那么不建议你跳槽.现实中很多人跳槽后获得待遇是…
上节学习回顾 在上一节当中,主要学习了Sun JDK的一些命令行和可视化性能监控工具的具体使用,但性能分析的重点还是在解决问题的思路上面,没有好的思路,再好的工具也无补于事. 本节学习重点 在书本上本节的主要内容是讲作者在工作过程中对调优的一些经验实战.对于我们读者来说,重点是学习作者分析解决问题的具体思路.当然不能离开书本的内容,作者利用的是上一节所介绍到的工具去解决他所遇到的问题.但本人的工作环境跟书本上的教程不一致,但思路大同小异.所以在本章的学习笔记当中,还是结合自身的情况,聊聊调优这事…
文章首发于微信公众号:BaronTalk 上一篇文章我们介绍了「类文件结构」,这一篇我们来看看虚拟机是如何加载类的. 我们的源代码经过编译器编译成字节码之后,最终都需要加载到虚拟机之后才能运行.虚拟机把描述类的数据从 Class 文件加载到内存,并对数据进行校验.转换解析和初始化,最终形成可以被虚拟机直接使用的 Java 类型,这就是虚拟机的类加载机制. 与编译时需要进行连接工作的语言不同,Java 语言中类的加载.连接和初始化都是在程序运行期间完成的,这种策略虽然会让类加载时增加一些性能开销,…
程序小白在写代码的过程中,经常会不经意间写出发生内存溢出异常的代码.很多时候这类异常如何产生的都傻傻弄不清楚,如果能故意写出让jvm发生内存溢出的代码,有时候看来也并非一件容易的事.最近通过学习<深入理解java虚拟机-JVM高级特性与最佳实践>这本书,终于初步了解了一下java虚拟机的内存模型.本文通过写出使jvm发生内存溢出异常的代码来对自己的学习结果进行总结,同时也提醒自己以后写代码时候不要再跳进这个坑啦. java的内存管理是由java虚拟机自动进行管理的,并不需要程序员过多的手动干预…
第一章:Java体系结构介绍 1.Java为什么重要?       Java是为网络而设计的,而Java这种适合网络环境的能力又是由其体系结构决定的,可以保证安全健壮和平台无关的程序通过网络传播. 2.网络带来的机遇和挑战       平台无关性.安全性.网络移动性,Java体系的这三个方面共同使得Java和发展中的网络计算环境相得益彰. 3.Java体系结构       Java程序设计语言       Java class文件格式       Java应用编程接口(API)       Ja…
前言 我们知道我们写的程序经过编译后成为了.class文件,.class文件中描述了类的各种信息,最终都需要加载到虚拟机之后才能运行和使用.而虚拟机如何加载这些.class文件?.class文件的信息进入到虚拟机后会发生什么变化?这些都是本文要讲的内容,文章将会讲解加载类加载的每个阶段Java虚拟机需要做什么事(加粗标红). 类使用的7个阶段 类从被加载到虚拟机内存中开始,到卸载出内存,它的整个生命周期包括:加载(Loading).验证(Verification).准备(Preparation)…