- 博客(7)
- 收藏
- 关注
原创 JVM(六):GC算法之标记-清除算法,标记复制算法,标记整理算法,分代收集算法
上一章节中,我们知道了如何去判断对象是否还存活。那么当我们知道了那些不再存活的对象时,就需要及时的把这些对象清除掉,这也就是在JVM中重要的操作---GC(garbage collection) 内存回收操作。这章节中我们主要是要去知道关于一些GC操作的算法。在了解这些算法之前呢,需要大致的对堆中的分代简单了解一下。在堆中,存在新生代跟老年代这么2块内存空间。一般而言:新生代所占用的内存...
2020-03-24 11:18:41 637
原创 JVM(五):怎么去判断对象是否还活着?
上章讲到了如何去访问堆中的对象,现在我们来看看关于对象是否还活着的判断方式,同样的要判断一个对象是否还活着也会有两种方式,往下看:1.引用计数法顾名思义引用计数,引用计数就是当我们的对象被引用是时候对应的计数器就会+1,当引用被释放后对应的计数器就会-1.当计数器等于0的时候,就意味着这个对象没有被引用了,也就是说这个可以被gc进行回收,不再存活。优缺点:首先这种判断对象存活的...
2020-03-21 16:44:14 780
原创 JVM(四):对象是如何被访问的?
上篇文章中我们讲到了 对象是如何被创建的以及在堆中的空间是如何被分配的,这章呢?咱们来说说这个堆中的对象是怎么被访问的。其实要想去访问对象有以下两种方式:1.直接指针访问在虚拟机栈中呢,会有一个叫做局部变量表的东东,这里边呢有个reference的引用类型存储了指向了堆中的一个地址(对象在堆中的地址),堆中的这个地址呢会有2种类型的数据,分别是实例数据跟类型数据,实例数据直...
2020-03-21 14:59:24 181
原创 JVM(三):对象的创建过程是怎样的?
对象的创建过程中一般会包括以下几个步骤:1):当虚拟机接收到一条new创建对象指令时,会先检查以下在常量池中是否能够找到这个对象的符号引用。2):判断这个类是否被虚拟机加载,解析和初始化。3):在堆中为这个对象分配空间,分配空间的方式有以下2种: a.指针碰撞: 包含开辟空间跟移动指针2个步骤 b.空闲列表:包含开辟空间跟修改空闲列表2 个步骤 以上2中分配空间...
2020-03-21 10:56:47 160
原创 JVM(二):什么是方法区,堆,java虚拟机栈,本地方法栈,程序计数器?
我们知道jvm运行时数据区中包含了方法区,堆,java虚拟机栈,本地方法栈和程序计数器五个部分那么这五个部分究竟是个啥玩意呢?且听我道来(^_−)I:方法区是什么?⊙方法区是java中一块线程共享数据区,也就是说在这里存储的东东,能够被不同线程共享。其次,方法区存储了类加载之后的 类信息,常量,静态变量 以及被编译后的代码⊙类信息:比如类的版本号,方法,接口...
2019-07-28 00:24:37 485
原创 JVM(一):什么是JVM运行时数据区?
如图:JVM运行时数据区一共包括5个部分分别是:线程共享数据区:方法区,堆。线程独立数据区:java虚拟机栈,本地方法栈,程序计数器。
2019-07-27 23:12:53 122
原创 常见SQL语句优化
随着业务的发展,数据库数据量与日俱增,这时候进行通过sql操作数据库就会带来一系列待优化的问题。对于sql语句的优化,这里我大致的把它划分为两个方面:一方面为导致跳过索引而进行全表扫描,另一方面为非全表扫描引起的sql优化。一:导致跳过索引而进行全表扫描的几种情况1)Like做模糊查询时使用了双百分号(%%)比如:select * from weblogs where search...
2019-07-18 16:31:52 105
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人