SlideShare a Scribd company logo
1 of 27
Java 内存管理 Java Memory Management 淘宝市场产品技术部 - 增值业务组- 清虚
Overview ,[object Object],[object Object],[object Object],[object Object],[object Object]
Introduction ,[object Object],[object Object],[object Object]
Introduction ,[object Object],1 、悬挂指针 (dangling references) 2 、内存泄露 (space leaks)
Introduction Java 中内存分为堆内存和非堆内存。 GC  主要对以下工作负责: 1 、分配内存 2 、确保引用对象存在于内存中 3 、回收不可达对象的内存
Garbage Collection Algorithm ,[object Object],root 优点:只访问活对象,收回内存算法简单,复制后,直接全部收回 缺点:如果活对象特别多,效率非常低,需要很多内存空间
Garbage Collection Algorithm ,[object Object],root 优点:不用额外空间,就地收回空间 缺点:需要进行两次遍历,并且会产生碎片 , 导致内存分配效率下降
Garbage Collection Algorithm ,[object Object],root 优点:不用额外空间,就地收回空间,整理后避免了内存碎片的产生 同时,同时提高了内存分配效率 缺点:因为需要整理内存,因此该算法增加了垃圾回收的时间
Garbage Collection Algorithm 应用中 GC 的 bottleneck 在哪里 ??? 特点:垃圾收集时应用需要暂停
Hotspot Generations  ,[object Object]
Hotspot Generations  ,[object Object],[object Object],从 young 中活下来了再来我这里
Hotspot Generations  ,[object Object],[object Object],[object Object],[object Object],GC 分为两种类型: Young GC 、 Full GC
Hotspot Generations  ,[object Object],[object Object],[object Object],Young 包括了 1 个 Eden 和 2 个 survivor 空间,对象都是在 Eden 中进行 分配内存,经过至少一次 GC 后才进入 survivor 中。 Why?? 注: survivor 在任何时候都必须保持一个空间全部是空状态。
Garbage Collectors ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Garbage Collectors ,[object Object],[object Object],X X X X X Eden From To Old
Garbage Collectors ,[object Object],[object Object],X X X 这里采用的标记 - 清除 - 整理算法
Garbage Collectors ,[object Object],[object Object],X X X X X Eden From To Old
Garbage Collectors ,[object Object],[object Object],X X X 这里采用的标记 - 清除 - 整理算法 ,仍然采用单线程方法与串行收集器一样。 注意:这里的并行是指 多线程并行复制,加快 YGC 复制速度,从而减少应 用停顿时间。
Garbage Collectors ,[object Object],[object Object],[object Object]
Garbage Collectors ,[object Object],[object Object]
Garbage Collectors ,[object Object],[object Object],1. 标记阶段将 old 代分为固定大小的区域,并以多个强可达对象为起点分配给 多个线程,并行标记活动对象,并在活动对象所在的区域上记录对象的大小和位置 2. 汇总阶段 , 统计区域,标记哪些区域密度小的部分需要被回收 3. 整理阶段,将需要回收的部分活对象进行整理到左边其他区域,并清除其他区域
Garbage Collectors ,[object Object],[object Object],[object Object]
Garbage Collectors ,[object Object],[object Object],1. 开始回收时,暂停应用程序,标记出强可达对象,然后应用程序和标记线程并发执行  2. 并发标记完毕,再次暂停所有应用程序,并行多线程重新标记没有标记到对象 3.  然后应用程序和垃圾回来线程并发执行 ( 不再进行整理,容易出现碎片 )
Tuning Garbage Collection 成也萧何败也萧何!!
Tuning Garbage Collection Java –jar –XX:+ 因此,参数主要分两类堆大小设置参数,算法选择参数 -XX:+<option>  开启某个功能 -XX:-<option>  关闭某个功能 -XX:<option>=<number>  设置某个选项代表的数量 -XX:<option>=<string>  设置某个选项代表的含义
Tuning Garbage Collection 1. 影响 VM 行为的参数 2. 影响
[object Object]

More Related Content

Similar to Java内存管理

Java垃圾收集原理
Java垃圾收集原理Java垃圾收集原理
Java垃圾收集原理
yin gong
 
Sun jdk 1.6内存管理 -使用篇-毕玄
Sun jdk 1.6内存管理 -使用篇-毕玄Sun jdk 1.6内存管理 -使用篇-毕玄
Sun jdk 1.6内存管理 -使用篇-毕玄
锐 张
 
Java线上应用问题排查方法和工具(空望)
Java线上应用问题排查方法和工具(空望)Java线上应用问题排查方法和工具(空望)
Java线上应用问题排查方法和工具(空望)
ykdsg
 
Sun jdk 1.6内存管理 -使用篇
Sun jdk 1.6内存管理 -使用篇Sun jdk 1.6内存管理 -使用篇
Sun jdk 1.6内存管理 -使用篇
bluedavy lin
 
Lamp高性能设计
Lamp高性能设计Lamp高性能设计
Lamp高性能设计
锐 张
 
基于MySQL开放复制协议的同步扩展
基于MySQL开放复制协议的同步扩展基于MySQL开放复制协议的同步扩展
基于MySQL开放复制协议的同步扩展
Sky Jian
 

Similar to Java内存管理 (20)

Java垃圾收集原理
Java垃圾收集原理Java垃圾收集原理
Java垃圾收集原理
 
Sun jdk 1.6内存管理 -使用篇-毕玄
Sun jdk 1.6内存管理 -使用篇-毕玄Sun jdk 1.6内存管理 -使用篇-毕玄
Sun jdk 1.6内存管理 -使用篇-毕玄
 
JVM内容管理和垃圾回收
JVM内容管理和垃圾回收JVM内容管理和垃圾回收
JVM内容管理和垃圾回收
 
Java GC Tuning
Java GC TuningJava GC Tuning
Java GC Tuning
 
Aswan&hump
Aswan&humpAswan&hump
Aswan&hump
 
Java线上应用问题排查方法和工具(空望)
Java线上应用问题排查方法和工具(空望)Java线上应用问题排查方法和工具(空望)
Java线上应用问题排查方法和工具(空望)
 
Web请求异步处理和海量数据即时分析在淘宝开放平台的实践
Web请求异步处理和海量数据即时分析在淘宝开放平台的实践Web请求异步处理和海量数据即时分析在淘宝开放平台的实践
Web请求异步处理和海量数据即时分析在淘宝开放平台的实践
 
Jvm内存管理基础
Jvm内存管理基础Jvm内存管理基础
Jvm内存管理基础
 
Large-Scale Cluster Mangement & Kubernetes Under The Hood
Large-Scale Cluster Mangement & Kubernetes Under The HoodLarge-Scale Cluster Mangement & Kubernetes Under The Hood
Large-Scale Cluster Mangement & Kubernetes Under The Hood
 
Sun jdk 1.6内存管理 -使用篇
Sun jdk 1.6内存管理 -使用篇Sun jdk 1.6内存管理 -使用篇
Sun jdk 1.6内存管理 -使用篇
 
老舊web上雲端
老舊web上雲端老舊web上雲端
老舊web上雲端
 
Mongodb Blockstore memory and system tuning
Mongodb Blockstore memory and system tuningMongodb Blockstore memory and system tuning
Mongodb Blockstore memory and system tuning
 
Lamp高性能设计
Lamp高性能设计Lamp高性能设计
Lamp高性能设计
 
Jmm与map reduce简介
Jmm与map reduce简介Jmm与map reduce简介
Jmm与map reduce简介
 
Linux内存管理
Linux内存管理Linux内存管理
Linux内存管理
 
Linux内存管理
Linux内存管理Linux内存管理
Linux内存管理
 
基于MySQL开放复制协议的同步扩展
基于MySQL开放复制协议的同步扩展基于MySQL开放复制协议的同步扩展
基于MySQL开放复制协议的同步扩展
 
GC算法和IE中JS内存泄露
GC算法和IE中JS内存泄露GC算法和IE中JS内存泄露
GC算法和IE中JS内存泄露
 
From Java Stream to Java DataFrame
From Java Stream to Java DataFrameFrom Java Stream to Java DataFrame
From Java Stream to Java DataFrame
 
介紹前端 Web 技術在跨平台開發上的應用
介紹前端 Web 技術在跨平台開發上的應用介紹前端 Web 技術在跨平台開發上的應用
介紹前端 Web 技術在跨平台開發上的應用
 

More from lovingprince58 (9)

No sql数据库笔谈
No sql数据库笔谈No sql数据库笔谈
No sql数据库笔谈
 
Design Patterns For Distributed NO-reational databases
Design Patterns For Distributed NO-reational databasesDesign Patterns For Distributed NO-reational databases
Design Patterns For Distributed NO-reational databases
 
分布式Key-value漫谈
分布式Key-value漫谈分布式Key-value漫谈
分布式Key-value漫谈
 
Linux性能监控cpu内存io网络
Linux性能监控cpu内存io网络Linux性能监控cpu内存io网络
Linux性能监控cpu内存io网络
 
淘宝软件基础设施构建实践
淘宝软件基础设施构建实践淘宝软件基础设施构建实践
淘宝软件基础设施构建实践
 
Google big table 中文版
Google big table 中文版Google big table 中文版
Google big table 中文版
 
[Python参考手册(第4版)].(美)比兹利.扫描版
[Python参考手册(第4版)].(美)比兹利.扫描版[Python参考手册(第4版)].(美)比兹利.扫描版
[Python参考手册(第4版)].(美)比兹利.扫描版
 
Tomcat Optimisation & Performance Tuning
Tomcat Optimisation & Performance TuningTomcat Optimisation & Performance Tuning
Tomcat Optimisation & Performance Tuning
 
Jetty服务器架构及调优.v2 2011-5
Jetty服务器架构及调优.v2 2011-5Jetty服务器架构及调优.v2 2011-5
Jetty服务器架构及调优.v2 2011-5
 

Java内存管理