Java内存回收机制



Java内存回收机制

一、Java对象在内存引用状态
内存泄露:程序运行过程中,会不断分配内存空间,那些不再使用的内存空间应该即时回收它们,从而保证系统可以再次使用这些内存,如果存在无用的内存没有被回收回来,这就是内存泄漏.
(1)强引用
这是java程序中最常见的引用方式,程序创建一个对象,并把这个对象赋给一个引用变量,这个引用变量就是强引用.java程序可通过强引用来访问实际的对象。当一个对象被一个或一个以上的强引用变量引用时,它处于可达状态,它不可能被系统垃圾回收机制回收。
强引用是Java编程中广泛使用的引用类型,被强引用所引用的Java对象绝不会被垃圾回收机制回收,即使[......]

Read more

Java内存管理–内存分配



Java内存管理–内存分配

一、Java内存分配
1、 Java有几种存储区域?
* 寄存器
– 在CPU内部,开发人员不能通过代码来控制寄存器的分配,由编译器来管理
* 栈
– 在Windows下, 栈是向低地址扩展的数据结构,是一块连续的内存的区域,即栈顶的地址和栈的最大容量是系统预先规定好的。
– 优点:由系统自动分配,速度较快。
– 缺点:不够灵活,但程序员是无法控制的。
– 存放基本数据类型、开发过程中就创建的对象(而不是运行过程中)
* 堆
– 是向高地址扩展的数据结构,是不连续的内存区域
– 在堆中,没有堆栈指针,为此也就无法直接从处理[......]

Read more

Java中四舍五入实现方法

Java中四舍五入实现方法

Java有四舍五入函数–Math.round,通过一个例子看看他的用法:

[java] view plaincopy
package math;

public class MathRoundTest {
/**
* Math类中提供了三个与取整有关的方法:ceil,floor,round,
* 这些方法的作用于它们的英文名称的含义相对应,例如:ceil的英文意义是天花板,该方法就表示向上取整,
* Math.ceil(11.3)的结果为12,Math.ceil(-11.6)的结果为-11;floor的英文是地板,
* 该方法就表示向下[......]

Read more

二叉树的遍历(Java实现)

二叉树的遍历(Java实现)

主要是二叉树的遍历,包括递归遍历和非递归遍历

[html] view plaincopy在CODE上查看代码片派生到我的代码片
<pre code_snippet_id=”166710″ snippet_file_name=”blog_20140122_1_6536097″ class=”java” name=”code”><pre code_snippet_id=”166710″ snippet_file_name=”blog_20140122_1_6536097″ name=”code” class=”java”>pack[......]

Read more

二叉排序树(二叉搜索树)

二叉排序树(二叉搜索树)

二叉排序树

二叉排序树又称为二叉查找树,它是一种特殊结构的二叉树,其定义为:二叉树排序树或者是一棵空树,或者是具有如下性质的二叉树:

(1)若它的左子树非空,则左子树上所有结点的值均小于根结点的值;

(2)若它的右子树非空,则右子树上所有结点的值均大于根结点的值;

(3)它的左右子树也分别为二叉排序树。

这是一个递归定义。由定义可以得出二叉排序树的一个重要性质:中序遍历一个二叉排序树时可以得到一个递增有序序列。图1所示的二叉树就是一棵二叉排序树,若中序遍历图8.3(a)的二叉排序树,则可得到一个递增有序序列为:1,2,3,4,5,6[......]

Read more

传教士和野人问题(Missionaries and Cannibals)

传教士和野人问题(Missionaries and Cannibals)

传教士和野人问题(Missionaries   and   Cannibals)
这是一个经常在有关讨论人工智能的书籍中见到的问题,   其描述是这样的:
有N个传教士和N个野人来到河边渡河,   河岸有一条船,   每次至多可供k人乘渡。问传教士为了安全起见,   应如何规划摆渡方案,   使得任何时刻,   河两岸以及船上的野人数目总是不超过传教士的数目(否则不安全,   传教士有可能被野人吃掉)。即求解传教士和野人从左岸全部摆渡到右岸的过程中,   任何时刻满足M(传教士数)≥C(野人数)和M+C≤k的摆[......]

Read more

Trie树(字典树)

Trie树(字典树)

1. Trie树
Trie树,即字典树,又称单词查找树或键树,是一种树形结构,是一种哈希树的变种。典型应用是用于统计和排序大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的优点是:最大限度地减少无谓的字符串比较,查询效率比哈希表高。

Trie的核心思想是空间换时间。利用字符串的公共前缀来降低查询时间的开销以达到提高效率的目的。

它有3个基本性质:
根节点不包含字符,除根节点外每一个节点都只包含一个字符。
从根节点到某一节点,路径上经过的字符连接起来,为该节点对应的字符串。
每个节点的所有子节点包含的字符都不相同。
2[......]

Read more

Java中十个常见的违规编码

这份列表没有依据任何规则或顺序,所有的这些都是通过代码质量工具包括CheckStyleFindBugsPMD检查出。一起来看下:

一、Eclipse编译器提供源代码格式输入

Eclipse提供自动源码格式选项,并且组织输入(删除未使用的代码)。你可以使用下面的这些快捷键进行操作。

Ctrl + Shift + F——源代码格式

Ctrl + Shift + O——组织输入并删除未使用的代码

代替手动调用这两个函数,只需根据Eclipse自动格式和自动组织选项,可以随时保存文件。

操作步骤,在Eclipse中进入Window -> Preferenc[......]

Read more

java计算字符串的相似度方法实例

java计算字符串的相似度方法实例。

《编程之美》,参阅了其中的——计算字符串的相似度

许多程序会大量使用字符串。对于不同的字符串,我们希望能够有办法判断其相似程度。我们定义了一套操作方法来把两个不相同的字符串变得相同,具体的操作方法为:

1.修改一个字符(如把“a”替换为“b”)。

2.增加一个字符(如把“abdd”变为“aebdd”)。

3.删除一个字符(如把“travelling”变为“traveling”)。

比如,对于“abcdefg”和“abcdef”两个字符串来说,我们认为可以通过增加/减少一个“g“的方式来达到目的。上面的两种方案,都仅需要一[......]

Read more