Java

Java8内存区域详解(转)

如果没有特殊说明,都是针对的是 HotSpot 虚拟机。


1 概述 #

对于 Java 程序员来说,在虚拟机自动内存管理机制下,不再需要像 C/C++程序开发程序员这样为每一个 new 操作去写对应的 delete/free 操作,不容易出现内存泄漏和内存溢出问题。正是因为 Java 程序员把内存控制权利交给 Java 虚拟机,一旦出现内存泄漏和溢出方面的问题,如果不了解虚拟机是怎样使用内存的,那么排查错误将会是一个非常艰巨的任务。

...

线程与任务(一)

并发的本质是多个线程同时处理某个任务1不同于进程,线程可以访问同一共享资源(临界资源),当程序不够健壮时,使用多线程就可能带来问题,这是要反复讨论并发的原因之一。

在Java中,必须明白一点:线程由Thread类启动,但Thread类并不执行任何操作,它只是驱动赋予它的任务。因此将线程与任务的概念区分开,有利于理解并发。

实际上,开发过程中线程与任务(的联系)被隔离的更加明显,往往不需要显式地声明(创建)线程,然后将任务(声明任务是必须的)分配给线程,并由线程负责驱动( allocate task to thread to execute ),这一过程通常由线程池完成 。

...

ArrayList

ArrayList是Java集合框架中使用最为频繁的实现,其本质是一个有序的可自由扩容的对象数组。它实现了RandomAccess这个标记接口,意味着其在随机访问性能上有一定优势。

...

访问权限修饰符

本系列内容主要来自TIJ,Java核心技术卷以及Java SE 8 API

介绍了Java的public、default、protected、private四种访问权限修饰符。

...

JVM垃圾回收概要(转)

本节常见面试题 #

问题答案在文中都有提到

  • 如何判断对象是否死亡(两种方法)。
  • 简单的介绍一下强引用、软引用、弱引用、虚引用(虚引用与软引用和弱引用的区别、使用软引用能带来的好处)。
  • 如何判断一个常量是废弃常量
  • 如何判断一个类是无用的类
  • 垃圾收集有哪些算法,各自的特点?
  • HotSpot 为什么要分为新生代和老年代?
  • 常见的垃圾回收器有哪些?
  • 介绍一下 CMS,G1 收集器。
  • Minor Gc 和 Full GC 有什么不同呢?
...

线程与任务(二)

第一篇文章中,讨论了线程与任务的概念,以及利用任务(Runnable接口)来创建线程。

同时,讨论了线程的生命周期。此外,介绍了线程的优先级以及守护线程这两个实用性不高的概念。

最后,讨论了线程的中断状态这个概念。线程的中断状态以及如何响应中断,对于理解线程的运行机制很重要。

这一篇,继续讨论几个线程相关的概念,包括:

  • 线程的让步
  • 等待线程加入
  • 自管理线程
  • 处理线程的异常
...

LinkedList

LinkedList是基于双向链表实现的有序集合,其不能像ArrayList一样通过索引(index)访问元素,同时LinkedList还实现了Deque接口,意味着LinkedList可以实现双端队列的操作

...

static关键字

static关键字意为“静态的”,其语义可以理解为“类的对象”(不要理解为Class对象),即不需要对象实例,可以直接通过类名.字段名的形式直接访问。

...