本文旨在用最通俗的语言讲述最枯燥的基本知识 学过Java基础的人都知道:值传递和引用传递是初次接触Java时的一个难点,有时候记得了语法却记不得怎么实际运用,有时候会的了运用却解释不出原理,而且坊间讨论的话题又是充满争议:有的论坛帖子说Java只有值传递,有的博客说两者皆有;这让人有点摸不着头脑,下 ...
分类:
编程语言 时间:
2019-01-14 20:06:25
阅读次数:
175
Java代码运行的方式 1:在开发工具中运行 2:双击 jar 文件运行 3:在命令行中运行 4:在网页中运行 上述运行方式都离不开 JRE,也就是 Java 运行时环境。实际上 JRE 仅包含运行 Java 程序的必须组件,包括 Java 虚拟机以及 Java 核心类库等。Java 程序员经常接触 ...
分类:
编程语言 时间:
2019-01-13 23:26:07
阅读次数:
240
【栈】 函数调用形成了一个栈帧 当调用bar时,创建了第一个帧 ,帧中包含了bar的参数和局部变量。当bar调用foo时,第二个帧就被创建,并被压到第一个帧之上,帧中包含了foo的参数和局部变量。当foo返回时,最上层的帧就被弹出栈(剩下bar函数的调用帧 )。当bar返回的时候,栈就空了 【堆】 ...
分类:
其他好文 时间:
2019-01-08 17:16:51
阅读次数:
345
启用gdb进行调试二进制程序,必须在二进制程序在采用gcc或g++编译时加入 g参数 启动gdb进行调试的几种形式: 直接启动gdb程序进行调试program程序 启动gdb挂载入进程号为pid的进程进行调试,挂载后gdb会暂停该进程的执行 若程序运行崩溃产生了coredump文件,可采用该方式进行 ...
分类:
数据库 时间:
2019-01-05 20:06:49
阅读次数:
233
关于Java的GC垃圾回收过程中,一些概念和过程的整理和理解。 1.1 堆 堆(Heap)是Java虚拟机中内存最大的一块区域,被所有线程共享,主要存放对象实例。 1.2 栈 栈(Stack)是线程私有的,生命周期与线程相同。每个方法在执行时都会创建一个栈帧用于存储局部变量表,操作数帧,方法出口信息 ...
分类:
其他好文 时间:
2019-01-05 18:12:32
阅读次数:
195
一、什么内存会被回收 可达性分析算法 通过一系列的GC ROOT的对象作为超始点,从这些节点开始向下搜索,搜索所走的路径称为"引用链",当一个对象到GC ROOT之间没有任何引用链,则会对该对象进行一次标记,说明对象暂时是没用的 GC ROOT对象指: 虚拟机栈(栈帧中的局部变量表)中的引用对象 方 ...
分类:
其他好文 时间:
2018-12-28 10:45:28
阅读次数:
216
谈到栈帧(stack frame)时,可能会想到在方法中声明的局部变量。当然,可能还会注意到 一些隐藏的局部变量,如 foreach 循环中的迭代器。但栈上的内容不止这些,至少逻辑上是这样 。 很多情况下,在一些表达式还没有计算出来前,另一些中间表达式是不能使用的。最简单的例子 莫过于加法等二进制操 ...
分类:
其他好文 时间:
2018-12-16 23:42:01
阅读次数:
242
又快有一个月没写博客了,最近在看《深入理解计算机系统》这本书,目前看完了第三章,看完这章,对程序的机器级表示算是有了一个入门,也对 C 语言里函数栈帧有了一个初步的理解。 为了加深对书本内容的认识,以后每学习完一部分章节,就完成相应书本附带的实验题目。 第三章对应的实验是 BombLab,下面是我做 ...
分类:
其他好文 时间:
2018-12-16 20:32:04
阅读次数:
552
方法 方法的结构 方法是一块具有名称的代码。 可以使用方法的名称从别的地方执行代码,也可以把数据传入方法并接收数据输出。 方法是类的函数成员,主要有两个部分,方法头和方法体。 方法头 指定方法的特征 方法是否返回数据,若返回,返回什么类型 方法的名称 哪种类型的数据可以传递给方法或从方法返回,以及应 ...
Java虚拟机运行时数据区在JDK1.8之前,JVM运行时数据区分为堆、虚拟机栈、本地方法栈、方法区、程序计数器。如下图所示:虚拟机栈:线程私有,随线程创建而创建。栈里面是一个一个“栈帧”,每个栈帧对应一次方法调用。栈帧中存放了局部变量表(基本数据类型变量和对象引用)、操作数栈、方法出口等信息。当栈调用深度大于JVM所允许的范围,会抛出StackOverflowError的错误。本地方法栈:线程私
分类:
编程语言 时间:
2018-12-06 20:52:34
阅读次数:
207