`
ruijf
  • 浏览: 71210 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

Java内存管理和GC学习

阅读更多

内存划分

1。JAVA内存主要划分为方法栈、方法区、堆。

2。方法栈上内存会自动释放;

3。方法区上主要加载了类的元信息、静态变量、常量。改区域又称为持久代(Perm Gen),默认是最小16M,最大64M。配置参数 -XX:PermSize=16m -XX:MaxPermSize=64m;

4。堆是按分代进行管理,主要分为新生代(New Gen)和旧生代(Old Gen或Tenuring Gen)。

    1)新生代又分为Eden Space,S0,S1三块区域。

    2)Eden是new出来对象的出生地(原来对象是亚当和夏娃生的啊?)。

    3)S0和S1是2块大小相同的区域,合起来又称为Survivor Space,这2块区域是进行垃圾回收时生存对象的集散地,每次回收是总是从一个区域移动到另一个区域,下次又从另一个区域移动到这个区域。

    4)堆大小默认值:最小1/64物理内存,最大1/4物理内存,32位机器最大为2G

    5)配置参数:-Xms64M(最小) -Xmx64M(最大) -Xmn16M(新生代大小)

 

GC

1。GC分为新生代GC和旧生代GC,新生代GC又称Minor GC。当旧生代GC触发时,也会触发新生代GC,此过程称为Full GC;

1。GC算法主要有复制(Copying)、标记-清除(Mark-Sweep)、标记-压缩(Mark-Compact);

2。Minor GC采用的算法是复制(Copying),其主要的三种方式为:

    1)串行GC(Serial GC) 暂停应用,单线程方式进行,配置参数-XX:+UserSerialGC

    2)并行回收GC(Parallel Scavenge) 暂停应用,多线程方式进行,配置方式-XX:UseParallelGC

    3)并行GC(ParNew) 配合旧生代CMS GC使用,CMS GC是与应用并发,多线程进行的,配置方式-XX:UseParNewGC

3。旧生代GC的算法主要采用标志-清除(Mark-Sweep)、标志-压缩(Mark-Compact),其主要的三种方式为:

    1)串行GC 暂停应用,单线程方式进行,算法为Mark-Sweep-Compact,配置参数-XX:+UserSerialGC;

    2)并行GC 暂停应用,多线程方式进行,算法为Mark-Compact,配置方式-XX:UseParallelGC;

    3)并发CMS(Concurrent Mark-Sweep GC) 与应用并发多线程进行,算法为Mark-Sweep,配置参数-XX:+UseConcMarkSweepGC;

 

查看工具

1.JMap  命令jmap -heap [PID] ,统计java内存使用情况,Jdk自带;

2.JStat  命令jstat -gcutil [PID] 5s,没5秒钟输出java内存使用率以及GC的次数和时间,Jdk自带

3.jstack 命令jstack -l pid ,输出进程的堆栈信息,jdk自带

 

 

1
2
分享到:
评论

相关推荐

    java内存管理精彩概述

    Java内存管理是Java核心技术的重要组成部分,对于每个开发者来说,理解其工作原理都是十分必要的。这一主题既实用又有趣。以下是对Java内存管理的精彩概述,主要基于Sun Hotspot JVM,但请注意,不同JVM可能有不同的...

    Java内存机制学习和使用

    Java内存管理是Java开发人员必须掌握的核心概念之一。良好的内存管理不仅能够提升应用性能,还能避免常见的内存泄漏问题。本文旨在深入探讨Java内存机制,特别是Java堆内存、本机内存以及两者之间的区别。 #### 二...

    Java内存泄露检测

    在实际工作中,银行软件开发中心的需求是让开发和测试人员了解这两种语言的内存管理原理,学习使用工具定位内存问题,并实施预防措施。通过这种方式,可以减少上线后的问题,对测试或生产环境中的应用进行实时监控,...

    java内存管理白皮书

    本文旨在深入探讨Java内存管理的各个方面,特别是针对HotSpot虚拟机的内存管理策略和机制。 首先,Java虚拟机内存管理机制的核心是垃圾收集(Garbage Collection, GC),它能够自动识别不再被引用的对象,并释放...

    JVM-内存管理 2012-12.pdf

    JVM(Java虚拟机)是运行Java程序的核心引擎,负责在不同操作系统上提供统一的...随着JDK版本的更新,内存管理的机制和参数也在不断地优化和演进,开发者需要不断学习和适应这些变化,以利用好JVM提供的内存管理能力。

    JVM内存管理-GC模型-编写GC友好的代码.pdf

    在现代软件开发中,Java虚拟机(JVM)作为一种广泛使用的平台,其内部机制尤其是内存管理和垃圾收集(GC)模型,对提升程序性能和稳定性至关重要。本文将深入探讨Sun Hotspot JVM 6的内存管理与GC模型,并介绍如何...

    Java内存监视器.rar

    总结来说,“Java内存监视器.rar”提供了实践性的工具和思路,帮助开发者深入理解Java内存管理,从而提升程序性能。学习并掌握这些知识,不仅可以优化代码,还能在解决复杂问题时得心应手。对于标签中的“Java源码-...

    Java程序员必须了解的GC工作原理

    Java程序员在进行内存管理时,垃圾收集(Garbage Collection, GC)是一个不可或缺的部分。理解GC的工作原理对于优化程序性能、防止内存泄漏以及提高系统稳定性至关重要。这篇文章将深入探讨Java中的垃圾收集机制,...

    Java 内存调整技巧

    Java的内存管理主要依赖于垃圾回收机制,它自动处理对象的创建和销毁,但在某些情况下,不适当的内存配置和编程实践可能导致性能瓶颈或内存泄漏,进而影响系统的稳定性和效率。 首先,理解垃圾回收的基本原理至关...

    Java内存管理问题案例分享_技术大学

    Java内存管理是Java编程中至关重要的一环,它关乎程序的性能、稳定性和资源效率。Java通过自动内存分配和回收机制,即垃圾收集(Garbage Collection, GC),减轻了程序员对内存管理的负担。然而,如果不深入理解Java...

    java内存精讲,互相学习

    Java内存管理是Java编程中的核心概念,它涉及到程序运行时如何高效地使用和管理内存。Java内存主要分为三个区域:堆(Heap)、栈(Stack)和方法区(Method Area),在Java虚拟机(JVM)中扮演着不同的角色。 1. **...

    从JVM的内存管理角度分析Java的GC垃圾回收机制.docx

    【Java的垃圾回收机制概述】 Java的垃圾回收(Garbage Collection,简称GC)是其内存管理的核心机制,它自动管理程序中的对象生命周期,负责...开发者需要不断学习和实践,以便在实际项目中做出最佳的内存管理决策。

    Java内存使用系列一Java对象的内存占用Java开发J

    在Java编程语言中,了解对象的内存占用是优化应用程序性能的关键。这个“Java内存使用系列一Java对象的内存占用”主题旨在深入探讨Java...在实践中,不断学习和优化内存使用策略,将有助于提升代码质量并降低维护成本。

    VisualGC 内存监控工具

    《VisualGC:深入理解JVM内存监控》 VisualGC是一款强大的内存监控工具,它作为JDK1.8中jvisualvm的插件...通过深入学习和应用VisualGC,我们可以提升代码质量,减少因内存问题引发的故障,从而提高整体系统的可靠性。

    Java学习笔记_内存管理.rar

    Java内存管理是Java编程中至关重要的一环,它涉及到程序的性能优化、稳定性和资源的有效利用。这份"Java学习笔记_内存管理.pdf"很可能是详细解析了Java如何进行内存分配、垃圾回收以及内存泄漏等相关概念。下面,...

    Java内存管理问题案例分享_技术大学.pdf

    Java内存管理问题是Java开发者在软件运行过程中经常会遇到的挑战之一,尤其在大型分布式系统中,内存泄漏、内存溢出...通过本分享的案例学习,可以加深对Java内存管理的认识,并能在实际遇到内存问题时快速定位和解决。

    Java中堆内存和栈内存详解

    ### Java中堆内存和栈内存详解 #### 一、引言 Java作为一种广泛使用的编程语言,其内存管理机制是...通过本文的学习,读者应该能够更深入地理解Java内存管理的基本概念,并能够根据实际需求选择合适的内存使用策略。

    深入Java核心_Java内存分配原理精讲

    Java内存分配原理是Java编程中的重要一环,它关乎到程序的性能、稳定性和资源管理。深入理解这一主题,能够帮助开发者编写出更高效、更稳定的代码。在Java中,内存分为堆内存、栈内存、方法区(在Java 8之后被元空间...

Global site tag (gtag.js) - Google Analytics