![](https://img-blog.csdnimg.cn/20190910133236668.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
JVM
Java与C++之间有一堵由内存动态分配和垃圾收集技术所围成的“高墙”,墙外面的人想进去,墙里面的人却想出来。
孙靖俊
这个作者很懒,什么都没留下…
展开
-
Java垃圾回收杂谈
对象是否存活 既然要进行垃圾回收,那么必然要知道回收谁,什么样的对象需要回收,没有其他地方引用该对象,那么该对象就是垃圾,就需要回收。 如何知道该对象是否还被引用呢?在早期提出了引用计数法来进行对象是否还被引用的判断,该算法的主要思想就是,如果一个对象被引用了,那么给该对象计数加1,如果取消了一个该对象的引用,那么该对象的计数减一,最终如果对象的计数为0,那么证明没有任何地方还在引用该对象...原创 2019-12-10 11:22:09 · 141 阅读 · 0 评论 -
Java内存区域
根据Java虚拟机规范,Java虚拟机会把Java的所管理的内存分成几个区域,分别为:程序计数器,Java虚拟机栈,本地方法栈,堆,方法区借用《深入理解java虚拟机》的图来描述:先要说明的一点是,java虚拟机栈,本地方法栈和程序计数器是线程私有的,方法区,堆是线程共享的,接下来逐一介绍程序计数器程序计数器是线程私有的,可以把程序计数器理解为方法执行的行号指标,字节码解释器可以通过改变...原创 2019-12-09 20:06:03 · 119 阅读 · 0 评论 -
Java:new一个对象的过程中发生了什么?
java在new一个对象的时候,会先查看对象所属的类有没有被加载到内存,如果没有的话,就会先通过类的全限定名来加载。加载并初始化类完成后,再进行对象的创建工作。我们先假设是第一次使用该类,这样的话new一个对象就可以分为两个过程:加载并初始化类和创建对象。一、类加载过程(第一次使用该类)java是使用双亲委派模型来进行类的加载的,所以在描述类加载过程前,我们先看一下它的工作过程:双亲委托模...转载 2019-11-22 15:29:36 · 270 阅读 · 0 评论 -
你了解JDK的命令行工具吗
javac和java是入门Java常用的两个命令,一个用来编译,一个用来执行,除了这两个命令,在jdk的bin目录下还有很多的命令,用于监视虚拟机和故障处理。在这里做一个介绍,在最后抛出问题通过这些命令来分析 首先来看一下bin目录下的这些命令,如下图:...原创 2019-08-06 08:43:59 · 735 阅读 · 0 评论 -
使用JDK命令排查故障实战案例详解
文章目录服务器CPU使用率达到99%程序发生了死锁java应用大量消耗内存 学习了JDK命令,就是为了排查故障的,今天通过几个分类来了解在程序遇到故障的时候,如果使用JDK命令排查问题服务器CPU使用率达到99% 这里我们先写一个demo,写一个死循环...原创 2019-08-06 09:49:06 · 2328 阅读 · 0 评论 -
jvm栈帧结构
栈帧(Stack Frame)是用于支持虚拟机进行方法调用和方法执行的数据结构,它是虚拟机运行时数据区的虚拟机栈(Virtual Machine Stack)的栈元素。栈帧存储了方法的局部变量表,操作数栈,动态连接和方法返回地址等信息。第一个方法从调用开始到执行完成,就对应着一个栈帧在虚拟机栈中从入栈到出栈的过程。 ...转载 2019-09-03 08:16:25 · 1082 阅读 · 0 评论