Java 内存类型分为:
Heap
Permanent
Stack
其中Heap
-Xms<size> set initial Java heap size
-Xmx<size> set maximum Java heap size
Heap分为:
a.新生代(young generation):新生代又被分为两块: Eden Space和Survivor spaces新建的大部分对象存放在Eden Space
b.旧生代(tenured generation又成old):存放新生代中经过多次垃圾回收仍然存活的对象,新建对象也
有可能存在,像大的数组对象,且成员中无引用外部对象
[Eden ['i:dn] n. 伊甸园, 乐园,tenured ['tenjuə]终身占用 ]
其中的Permanent Generation (non-heap)
保存虚拟机自己的静态(refective)数据,例如类(class)和方法(method)对象。JVM共享这些类数据。
这个区域被分割为只读的和只写的,
另外
Code Cache (non-heap)
HotSpot Java虚拟机包括一个用于编译和保存本地代码(native code)的内存,叫做“代码缓存区”(code cache)分区
OOM内存溢出:
如果JVM里运行的程序, 它的heap space和perm gen都满了,这个时候程序还企图创建新的对象实例的话,jvm gc就会启动,试图释放足够的内存来创建这个对象。这个时候如果gc无法释放出足够的内存,它就会抛出OutOfMemoryError内存溢出错误。
垃圾收集类型:
MinorGC局部垃圾收集(新生代垃圾收集)
FullGC全局垃圾收集 对新生代、旧生代及持久代都进行GC,此时JVM停止对外相应,CPU占用率变高。
FullGC原因:
1、旧生代空间不足触发Full GC
2、CMS GC失败触发的Full GC
3、统计得到的MinorGC晋升到旧生代的平均大小 大于旧生代的剩余空间
CMS:Concurrent Mark-Sweep GC(执行时间和应用并发进行),参数:-XX:+UseConcMarkSweepGC
注:CMS执行过程大部分时候是和应用并发进行,相比并行GC,CMS GC需要执行三次mark,GC总耗时较长,但执行GC的时间被缩短
分享到:
相关推荐
本系列课程从JVM基础到高级实战,老师手把手教你如何进行JVM调优,思路清晰,没有废话,旨在挑战高薪。 课程亮点: 1、基于阿里arthas进行JVM调优; 2、基于代码排查OOM问题,拒绝空讲; 3、总结JVM通用的调优思路;...
1. JVM调优 1.1 JVM调优总结(一)-一些概念 1.2 JVM调优总结(二)-一些概念 1.3 JVM调优总结(三)-基本垃圾回收算法 1.4 JVM调优总结(四)-垃圾...4.2 JVM内存管理:深入垃圾收集器与内存分配策略 4.3 深入理解JVM
Java引用,GC垃圾收集器,OOM 类加载,类加载器 对象初始化 编译 JiT:即时编译 两大无关性 平台无关性: 每一台平台解释器不同,但是虚拟机相同,跨平台的原因。 一个程序对应一个虚拟机,多个程序对应多个虚拟机...
介绍常用的JVM诊断和分析工具,并以死锁和OOM为例,展示这些工具的使用。 第八课 分析Java堆 MAT的使用案例 Jvisualvm介绍使用 介绍了Java堆的分析方法,以一个实例为基础,展示对堆的分析过程。 第九课 锁 ...
垃圾收集器与内存分配策略 2.3 类加载机制 2.4 JVM 内存模型 2.5 JVM 性能监控工具与调优 2.5.1 jps 2.5.2 jstat 2.5.3 jinfo 2.5.4 jmap 2.5.5 jhat 2.5.6 jstack 2.5.7 jConsole 3. 多线程 3.1 线程的通信与状态...
OOM、ANR及性能优化 各种机制 一些比较难理解的技术 启动流程 框架模式 开源库源码分析 其他 设计一套图片异步加载缓存方案 Android UI适配 第二部分 Java JavaSE JavaCollection JavaConcurrent JVM 第三部分 数据...
多数是一些 Java 基础知识、底层原理、算法详解。也有上层应用设计,其中不乏一些大厂面试真题。 如果对你有帮助请点下 Star,有疑问欢迎提 ,有好的想法请提 。 常用集合 ArrayList/Vector LinkedList HashMap ...
实际问题OOM内存不足问题GC问题(阅读GC日志) 配置/优化JVM参数目标内存管理和GC 字节码和类加载器JVM参数配置和优化CS核心基金会硬件网络操作系统DS /算法虚拟机类别物理硬件的系统VM(例如:Virtual Box,VMware...
多数是一些 Java 基础知识、底层原理、算法详解。也有上层应用设计,其中不乏一些大厂面试真题。 如果对你有帮助请点下 Star,有疑问欢迎提 ,有好的想法请提 。 常用集合 ArrayList/Vector LinkedList HashMap ...
多数是一些 Java 基础知识、底层原理、算法详解。也有上层应用设计,其中不乏一些大厂面试真题。 如果对你有帮助请点下 Star,有疑问欢迎提 ,有好的想法请提 。 常用集合 HashMap HashSet LinkedHashMap Java 多...