学而不厌,诲人不倦「孔子」

0%

对象的内存分配主要分配在新生代的Eden区上,如果启动了本地线程分配缓冲,将按线程优先在TLAB上分配。少数情况下可能直接分配在老年代中,分配的规则并不是百分百固定的,其细节取决于当前使用的是哪一种垃圾收集器组合,还有虚拟机中与内存相关的参数的设置。

阅读全文 »

如果说收集算法是内存回收的方法论,那么垃圾收集器就是内存回收的具体实现

阅读全文 »

标记-清除算法(Mark-Sweep)

最基础的收集算法,算法分为“标记”和“清除”两个阶段:首先标记出所有需要回收的对象,在标记完成后统一回收所有被标记的对象。

主要不足有两个:

  • 效率问题,标记和清除两个过程的效率都不高
  • 空间问题,标记清除之后会产生大量不连续的内存碎片,空间碎片太多可能会导致以后再程序运行过程中需要分配较大对象时,无法找到足够的连续内存而不得不提前触发另一次垃圾收集动作。
阅读全文 »

概述

说起垃圾收集(Garbage Collection,GC),大部分人都把这项技术当做Java语言的伴生产物。实际上,GC的历史比Java久远,1960年诞生于MIT的Lisp是第一门真正使用内存动态分配和垃圾收集技术的语言。在胚胎期时,人们就在思考GC需要完成的3件事情:

  • 哪些内存需要回收
  • 什么时候回收
  • 如何回收
阅读全文 »

在Java虚拟机规范的描述中,除了程序计数器外,虚拟机内存的其他几个运行时区域都有发生OutOfmemoryError(OOM)异常的可能

阅读全文 »

Java 与 C++ 之间有堵由内存动态分配和垃圾收集技术所围成的“高墙”,墙外面的人想进去,墙里面的人却想出来。

概述

对于Java程序员来说,在虚拟机自动内存管理机制的帮助下,不需要为每一个new操作去写匹配的 delete/free 代码,不容易出现内存泄漏和内存溢出问题,由虚拟机管理内存。不过一旦出现内存泄漏和内存溢出方面的问题,如果不了解虚拟机是怎样使用内存的,那么排查错误将会成为一项异常艰难的工作。

阅读全文 »

1、连接

为了连接到MySQL,需要以下信息:

  • 主机名(计算机名)– 如果连接到本地MySQL服务器,为localhost;
  • 端口(如果使用默认端口3306之外的端口)
  • 一个合法的用户名;
  • 用户口令
阅读全文 »