JVM
flyingsen
我是大佬,你也是大佬啊
展开
-
Java内存区域+常量池详解
说在前面,推荐 Github地址:https://github.com/Snailclimb/Java-Guide 。(java面试)基本问题:介绍下 Java 内存区域(运行时数据区) Java 对象的创建过程(五步,建议能默写出来并且要知道每一步虚拟机做了什么) 对象的访问定位的两种方式(句柄和直接指针两种方式)拓展问题:String类和常量池 8种基本类型的包装类和常量池...转载 2018-10-23 19:10:28 · 679 阅读 · 0 评论 -
如何理解java常量池
在深入理解java虚拟机一书中,我们可以将虚拟机内存分为五大快,堆和方法区是线程共享,其余三部分是线程私有的。这一节讨论方法区中常量池的知识。 程序计数器是jvm执行程序的流水线,存放一些跳转指令,我们可以简单理解为代码行号(不知道对不对) 本地方法栈是jvm调用操作系统方法所使用的栈。 虚拟机栈是jvm执行java代码所使用的栈。存放着基本类型的...原创 2018-10-23 17:27:59 · 277 阅读 · 0 评论 -
java中的各种数据类型在内存中存储的方式
1.java是如何管理内存的java的内存管理就是对象的分配和释放问题。(其中包括两部分)分配:内存的分配是由程序完成的,程序员需要通过关键字new为每个对象申请内存空间(基本类型除外),所有的对象都在堆(Heap)中分配空间。释放:对象的释放是由垃圾回收机制决定和执行的,这样做确实简化了程序员的工作。但同时,它也加重了JVM的工作。因为,GC为了能够正确释放对象,GC必须监控每一个对象...转载 2018-06-08 14:02:08 · 5277 阅读 · 2 评论 -
深入理解Java虚拟机 精华总结(面试)
一.运行时数据区域 Java虚拟机管理的内存包括几个运行时数据内存:方法区、虚拟机栈、堆、本地方法栈、程序计数器,其中方法区和堆是由线程共享的数据区,其他几个是线程隔离的数据区。 1.1程序计数器 程序计数器是一块较小的内存,他可以看做是当前线程所执行的行号指示器。字节码解释器工作的时候就是通过改变这个计数器的值来选取下一条需要执行的字节码的指令,分支、循环、跳转、异常处理、线程恢复等...转载 2018-11-02 23:08:55 · 220 阅读 · 0 评论 -
Java GC如何判断对象是否为垃圾
查找内存中不再使用的对象 引用计数法 引用计数法就是如果一个对象没有被任何引用指向,则可视之为垃圾。这种方法的缺点就是不能检测到环的存在。 2.根搜索算法(可达性分析法) 根搜索算法的基本思路就是通过一系列名为”GC Roots”的对象作为起始点,从这些节点开始向下搜索,搜索所走过的路径称为引用链(Reference Chain),当一个对象到GC Roots没有任何引用链相连...转载 2018-11-08 21:52:06 · 1080 阅读 · 1 评论