`
hgaong
  • 浏览: 1102 次
社区版块
存档分类
最新评论

java虚拟机常见配置及垃圾回收原理

    博客分类:
  • jvm
 
阅读更多

1.Java虚拟机运行时数据区:

 

-Xms 堆初始内存
-Xmx 堆最大内存
各个线程共享的内存区域,垃圾回收主要区域
用于存放对象实例,并不是所有对象实例都存放在堆,逃逸分析技术,栈上分配,标量替换优化技术可以使一些对象实例直接在栈上存放
堆可分为 新生代,老年代

方法区

-XX:MaxPermSize 永久代最大内存

-XX:PermSize 永久代初始内存

 

各个线程共享的内存区域

它用于存储已被虚拟机加载的类信息,常量,静态变量,即时编译器编译后的代码等数据,java虚拟机堆的逻辑部分.

HotSpot使用永久带实现方法区,JDK1.6及之前常量池放在方法区

方法区无法满足内存分配需求时,将抛出OutOfMemoryError

虚拟机栈
-Xss  栈内存
线程私有
如果线程请求的栈深度大于虚拟机所允许的深度,将抛出StackOverflowError
如果虚拟机栈可以动态扩展,且扩展时无法申请到足够的内存将抛出OOM
本地方法栈
线程私有
-Xoss 本地方法栈大小(使用HotSpot VM时此参数无效)

 

HotSpot 虚拟机栈与本地方法栈合二为一

与虚拟机栈一样,本地方法栈也会抛出StackOverflowError和OOM

 

程序计数器

线程私有

 无配置,程序计数器是一块较小的内存空间,它可以看做是当前线程所执行的字节码的行号指示器

唯一一个在java虚拟机规范中没有规定任何OOM情况的区域

 

2.垃圾回收

 

引用计数法

给对象添加一个引用计数器,每当有一个地方引用它时,计数器值加1,当引用失效时计数器值减1;任何时刻计数器值为0的对象就是不可能再被使用的.少数虚拟机使用此方法

优点:实现简单,判定效率高

缺点:难以解决对象间循环引用的问题

 

可达性分析法

通过一系列的GC根节点像下搜索,像下搜索的路径成为引用链,当一个对象到GC根节点没有任何引用链相互连接的时候,则证明此对象是不可用的.主流虚拟机多采用此方法

优点:解决了循环引用问题

缺点:效率不高,而且枚举根节点时整个系统处于冻结状态,会产生GC停顿(Sun称之为"Stop The World")

 

可达性分析算法中不可达的对象也不是一定会被回收,回收过程:不可达的对象会进行一次筛选(不满足筛选条件的对象将被回收):对象覆盖了finalize()且此方法没有被虚拟机调用过,筛选出来的对象会放入一个队列依次执行finalize(),如果执行finalize()时对象成功和GC根节点建立了引用链则将不会被回收.

 

 

 

 

分享到:
评论

相关推荐

    安卓的JAVA虚拟机 简单实用

    在Android系统中,Java虚拟机(JAVA Virtual Machine,JVM)扮演着至关重要的角色,它使得开发者能够使用Java语言编写应用程序,并在各种不同硬件配置的设备上运行。本文将深入探讨Android中的JAVA虚拟机,以及其在...

    深入java虚拟机 高清pdf 高清高清高清

    它详尽地探讨了Java虚拟机的工作原理、内存管理、类加载机制、字节码执行以及性能优化等多个核心主题,旨在帮助开发者提升程序的运行效率和稳定性。 1. **Java虚拟机概述**:Java虚拟机是Java平台的核心组件,它...

    《Java虚拟机规范》

    4. 垃圾回收:JVM如何识别并回收不再使用的对象,常见的垃圾回收算法和垃圾回收器的配置和使用。 5. 线程与同步:JVM对线程的支持和管理,以及如何实现线程的同步和通信机制。 6. 异常处理:JVM对异常的处理机制,...

    java高级之垃圾回收机制

    其中,垃圾回收机制(Garbage Collection, GC)是Java虚拟机(JVM)的一项重要特性,它能够自动检测并回收不再使用的对象占用的内存空间,从而有效避免了内存泄漏问题。本文将详细介绍Java中的垃圾回收机制及其工作原理...

    30+个视频+深入理解Java虚拟机(jvm优化+内存模型+虚拟机原理)

    常见的垃圾回收算法包括标记-清除算法、复制算法、标记-整理算法等。不同版本的JVM可能会采用不同的垃圾回收策略来平衡吞吐量和延迟时间。 ### JVM性能优化技巧 1. **选择合适的垃圾回收器**: 不同的应用场景适合...

    java虚拟机深入了解

    本篇文章将全面探讨Java虚拟机的主要概念、工作原理以及相关知识点。 1. **JVM结构** JVM由多个组件构成,包括类加载器、运行时数据区、执行引擎、本地方法接口和本地库。类加载器负责加载字节码,运行时数据区...

    JAVA虚拟机故障诊断与性能优化

    接着,书中深入剖析了垃圾回收(GC)算法,包括标记-清除、复制、标记-整理、分代收集等经典算法,以及现代JVM如G1、ZGC等新型垃圾收集器的工作原理。理解这些算法可以帮助开发者选择最适合应用的GC策略,减少停顿...

    实战JAVA虚拟机 JVM故障诊断与性能优化

    《实战JAVA虚拟机 JVM故障诊断与性能优化》这本书深入探讨了Java开发中不可或缺的Java虚拟机(JVM)技术,对于Java开发者来说,理解JVM的工作原理、故障诊断以及性能调优是至关重要的。以下将围绕这些主题展开详细的...

    Java虚拟机

    ### Java虚拟机(JVM)详解 #### 一、引言 Java虚拟机(JVM,Java Virtual Machine)是运行Java程序的核心组件之一,它为Java应用程序提供了一个抽象的计算机环境,使得Java程序可以在多种平台上运行而无需重新编译...

    Java 虚拟机JVM内存模型

    ### Java 虚拟机JVM内存模型知识点 #### 1. JVM概述 ##### 1.1 Java的特性与JVM的应用 Java语言的特性包括跨平台性、面向对象、安全性等。JVM是Java程序能够跨平台运行的关键,它负责将Java源代码转换成与平台无关...

    实战Java虚拟机——JVM故障诊断与性能优化

    3. **垃圾回收**:JVM通过自动垃圾回收机制来释放不再使用的对象所占用的内存。书中详细讲解了不同类型的GC算法,如串行、并行、并发标记清除等,以及如何调整GC参数以适应不同应用需求。 4. **性能监控与调优工具*...

    Java虚拟机:JVM高级特性与最佳实践(第2版)

    JVM作为Java平台的核心组成部分,负责执行字节码,提供内存管理、类加载、垃圾回收等关键功能。在本书中,读者将了解到以下几个重要的JVM知识点: 1. **类加载机制**:JVM如何加载、验证、准备、解析和初始化类。...

    jvm详解(java虚拟机详解)

    #### Java虚拟机(JVM)参数配置说明 JVM参数配置对于优化Java程序的性能至关重要。例如,`-XX:+UseParallelGC`可以启用并行垃圾收集器。 综上所述,深入理解JVM的工作原理及其内存管理机制对于优化Java程序性能至...

    java虚拟机第二版

    本篇文章将深入探讨Java虚拟机的原理与工作流程,帮助你更好地理解和掌握这一关键技术。 一、Java虚拟机结构 1. 类加载器子系统:负责加载类文件,包括启动类加载器、扩展类加载器和应用程序类加载器。它们遵循...

    Java堆的管理--垃圾回收

    ### Java堆的管理与垃圾回收详解 在Java编程语言中,内存管理是其核心特性之一,尤其是自动垃圾回收机制,极大地简化...通过合理配置垃圾回收策略,开发者可以在保证程序性能的同时,充分利用Java的自动内存管理优势。

    Java虚拟机分析与优化

    ### Java虚拟机分析与优化 #### 概览 在当今高度数字化的世界中,Java作为一种重要的...通过合理配置JVM参数、选用适当的垃圾回收策略以及利用各种调试工具,可以显著改善Java应用的表现,从而更好地服务于最终用户。

    深入Java虚拟机第二版

    4. **垃圾收集与内存管理**:分析了不同类型的垃圾收集器(如Serial、Parallel、CMS、G1等),垃圾回收的原理,以及如何进行内存调优。 5. **虚拟机指令集**:解释了字节码指令的含义和执行过程,以及如何通过ASM、...

Global site tag (gtag.js) - Google Analytics