内存区分

  • 寄存器Registers:用于存储指令、地址、数据。
  • 栈Stack:存放基本类型的数据、对象的引用和函数地址等,由系统控制。
  • 堆Heap:存放对象本身和数组,由开发者控制。
  • 静态域static field:存储静态变量。
  • 常量池constant pool:存储常量。

开发者能够控制的内存,基本在于堆和栈区域,它们的区别如下所示:

内存区分 - 图1

常用内存类型:

  • VSS-Virtual Set Size虚拟耗用内存(包含共享库占用的内存)。
  • RSS-Resident Set Size实际使用物理内存(包含共享库占用的内存)。
  • PSS-Proportional Set Size实际使用的物理内存(比例分配共享库占用的内存)。
  • USS-Unique Set Size进程独自占用的物理内存(不包含共享库占用的内存)。

一般来说内存占用大小有如下规律:VSS≥RSS≥PSS≥USS。