自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Coder_Ring

不逼自己一下,怎么知道自己有多强!

  • 博客(8)
  • 收藏
  • 关注

原创 【深入学习JVM 04】回收“已死”对象的过程

上篇文章讲到,虚拟机判断一个对象是否可回收是根据“可达性分析”,不可达的对象就是可回收的对象,但是被判定为“不可达的对象”也并非“非死不可”。它们只是被判了“缓刑”,最后是死是生都有可能。 我们看看回收无效对象的过程: 1.对象经过可达性分析后,发现没有被GC Roots关联,则会被第一次标记。 2.判断对象是否覆盖了finalize方法。 如果覆盖了该方法,并且该对象的finalize...

2018-08-27 21:54:32 182

原创 【深入学习JVM 03】判断一个对象是否可回收

我们知道,虚拟机判断一个对象是否“已死”,是判断对象是否还有引用指向它。而虚拟机又是如何判断是否有引用指向对象呢? 目前,判断对象是否存活的算法有两种: 引用计数算法 可达性分析算法 一、引用计数算法 每个对象都有一个计数器,当这个对象被一个变量引用或者被另一个对象引用时,计数器值就加一,当引用失效时,计数器值就减1,当计数器为0时,则对象不可能再被使用,需要被回收。 二、可...

2018-08-27 20:55:40 128

原创 【深入学习JVM 02】HotSpot虚拟机对象探秘

虚拟机运行时数据区域描述了虚拟机管理的内存划分情况,但是目前我们对于虚拟机还是有很多困惑,比如: 问题1:如何为对象分配内存? 问题2:对象内存模型是怎样的? 问题3:是怎样访问内存中的对象的? 问题4:分配内存的时候如果遇到并发问题,怎么保证分配操作的线程安全性? 为了搞清楚这些问题,我们先从虚拟机是如何创建对象开始讲起。 一、对象创建过程 当虚拟机遇到一条new 指令时,便会进...

2018-08-27 16:12:27 131

原创 【深入学习JVM 01】运行时数据区域划分

前言 在使用c++进行编程时,我们通过new创建的每一个对象都需要有对应的delete操作去释放对象所占用的内存,对内存的掌控度比较高,但是程序员需要知道对象什么时候不需要使用了,并需要手动释放内存,如果忘记了delete释放,很容易出现内存泄漏(申请内存后,没有释放,会一直占用着)和内存溢出(因为过多的内存泄漏导致无法申请足够的内存,即out of memory)的问题。 相比之下,java...

2018-08-27 00:25:26 158

原创 【剑指offer-04】用两个栈实现一个队列

问题描述 用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。 解法1 入队的时候只push到栈1,而出队的时候先将栈1中的元素全部倒入栈2,然后弹出栈2顶端元素,并将剩下的栈2全部元素弹回栈1。 import java.util.Stack; /** * 思路:第一个栈作为压入栈,第二个栈作为弹出栈,压入的时候只压入第一个栈, * 弹出的时候只...

2018-08-26 14:05:52 71

原创 【剑指offer-03】重建二叉树

问题描述 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。 解题思路 /** * Definition for binary tree * public class TreeNode {...

2018-08-26 00:36:58 127

原创 【剑指offer-02】反向输出一个链表

问题描述 输入一个链表,按照链表从尾到头的顺序,将值存入ArrayList中,并返回。 解法1 利用递归思想,递归本质也是利用了栈的思想。 /** * public class ListNode { * int val; * ListNode next = null; * * ListNode(int val) { * ...

2018-08-25 19:02:25 376

原创 【剑指offer-01】二维数组中的查找

问题描述: 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 解法1: public class Solution { /** * 思路:由于元素在二维数组中是有序排列,因此可以从四个角开始查找,用两个指针分别代表行号...

2018-08-25 16:46:27 201

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除