`
javalinjx
  • 浏览: 87302 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

深入理解jvm(二)

阅读更多

最近重看 BlueDavy 的 《分布式java应用:基础与实践》和周志明的《深入理解java虚拟机》,发现以前有些概念还是理解得不够,缺少实践,所以想在这里记录下自己学习的一些知识点。

今天就来看看OutOfMemoryError 异常吧

 1.Java堆异常

     java堆异常算是比较常见的,我们可以通过参数  -XX:+HeapDumpOnOutOfMemoryError让虚拟机在出现内存溢出异常时Dump出当前的内存堆转储快照以便事后分析。

    出现该异常时,堆栈信息为“java.lang.OutOfMemoryError”,后面还跟着"Java heap space"。

    下面来看看解决思路:

  •  可以通过内存映像分析工具(如 Eclipse Memory Analyzer ) 对  dump出来的堆转储快照进行分析,确认内存中的对象是否是必要的,就是说确定是内存泄漏还是内存溢出。
  • 如果是内存泄漏,进一步通过工具,分析泄漏对象到GC Roots的引用链,定位出泄漏代码的位置
  • 如果不存在泄漏,则需要检查jvm的堆参数(-Xmx 与 -Xms),是否可以增大。

2.虚拟机栈和本地方法栈溢出

    Java虚拟机规范中描述了两种异常:

    如果线程请求的栈深度大于虚拟机所允许的最大深度,将抛出StackOverflowError异常。

    如果虚拟机在扩展栈时无法申到足够的内存空间,则抛出OutOfMemoryError异常。

根据以上所述,解决此类异常,无法就是配置jvm的参数。

   通过-Xoss参数可以设置本地方栈大小, -Xss 参数  设置栈内存大小

 

3.运行时常量池溢出

   由于常量池分配在方法区内,我们可以通过-XX:PermSize 和 -XX:MaxPermSize限制方

法区的大小,从而间接限制其中常量池的容量

 

4. 方法区溢出

   方法区用于存放Class的相关信息,如类名、访问修饰符、常量池、字段描述、方法描述等。

此类异常主要是产生了大量的class信息,无法及时被jvm 回收导致的,一旦遇到此问题,需要

具体问题,具体分析 :(

 

5. 本机直接内存溢出

   DirectMemory容量可通过-XX:MaxDirectMemorySize指定,如果不指定,则默认与java堆的

最大值(-Xmx指定 )一样。

 

 

 

0
0
分享到:
评论

相关推荐

    深入理解JVM&G1; GC

    《深入理解JVM & G1 GC》一书深入剖析了Java虚拟机(JVM)的工作原理,特别是针对垃圾收集器(GC)中的G1(Garbage-First)算法进行了详尽的探讨。JVM是Java程序运行的基础,它负责解析、编译、执行Java代码,并管理...

    深入理解JVM.rar

    每个使用Java的开发者都知道Java字节码是在JRE中运行,而JVM则是JRE中的核心组成部分,承担分析和执行Java字节码的工作,而Java程序员通常并不需要深入了解JVM运行情况就可以开发出大型应用和类库。尽管如此,如果你...

    深入理解jvm虚拟机

    标题提到的“深入理解JVM虚拟机”,意味着要对JVM的内部机制进行深入的研究和理解。其核心知识点涵盖了如下几个方面: 1. JVM架构组成:JVM主要由类加载器(Class Loader)、运行时数据区(Runtime Data Area)、...

    深入理解JVM&G1GC

    资源名称:深入理解JVM & G1 GC内容简介:G1 GC提出了不确定性Region,每个空闲Region不是为某个固定年代准备的,它是灵活的,需求驱动的,所以G1 GC代表了先进性。《深入理解JVM & G1 GC》主要为学习Java语言的...

    圣思园张龙 深入理解jvm

    根据提供的文件信息,“圣思园张龙 深入理解jvm”,我们可以推断出这份资料主要关注于Java虚拟机(JVM)的深入理解和实践应用。JVM是Java开发环境中非常核心的一个组成部分,它不仅为Java程序提供了运行时环境,还负责...

    全面理解JVM虚拟机.pdf

    全面理解JVM虚拟机.pdf

    深入理解JVM.

    深入理解JVM,首先要明白Java技术的组成部分,包括Java编程语言、Java类文件格式、Java虚拟机(JVM)和Java应用程序接口(Java API)。这些组件共同构成了Java平台,使得Java程序能够实现跨平台运行。 Java虚拟机是...

    [转载]深入理解JVM

    ### 深入理解JVM #### 一、Java技术与Java虚拟机 Java不仅仅是一种编程语言,更是一项综合性的技术。它主要包括四个关键组成部分: 1. **Java编程语言**:这是一种面向对象的编程语言,提供了丰富的类库支持,...

    深入理解jvm

    深入理解JVM,深入理解JVM一本可以帮助开发者深入了解jvm的经典书籍

    深入理解JVM & G1 GC

    《深入理解JVM & G1 GC》这篇文章和相关压缩包文件主要聚焦于Java虚拟机(JVM)的内存管理,特别是垃圾收集器(GC)的优化,特别是G1(Garbage-First)垃圾收集器的深度解析。下面将详细阐述JVM、GC的基本概念,...

    深入理解JVM垃圾收集算法与垃圾收集器

    深入理解JVM垃圾收集算法与垃圾收集器

    深入理解JVM内幕:从基本结构到Java 7新特性

    Java虚拟机(JVM)是Java程序的核心组件,它负责解析和执行Java字节码,使得Java具有“一次编译,到处运行”的特性。...深入理解JVM,可以帮助开发者更好地应对各种运行时问题,提升应用程序的稳定性和效率。

    JVM 完整深入解析.pdf

    Java虚拟机(JVM)是运行Java程序的关键平台,其内部结构和内存管理机制非常复杂且精细。它将内存分为若干个不同的数据区域,以便管理Java程序的运行时数据。下面将详细介绍JVM中的运行时数据区,以及Java内存模型...

    深入理解Java虚拟机.rar_JAVA虚拟机_java_深入理解JVM:pdf_深入理解Java_深入理解jvm

    了解jvm的pdf,高清pdf,希望大家下载

    深入理解JVM内存结构及运行原理全套视频加资料.txt

    2019最新深入理解JVM内存结构及运行原理(JVM调优)高级核心课程视频教程下载。JVM是Java知识体系中的重要部分,对JVM底层的了解是每一位Java程序员深入Java技术领域的重要因素。本课程试图通过简单易懂的方式,系统...

    JAVA 深入理解JVM

    不得不看 JAVA 深入理解JVM 深入理解JAVA的原理 必读

    深入理解 JVM 机制

    深入理解JVM虚拟机机制是Java开发者必备的技能之一。Java技术的核心组成部分包括Java编程语言、Java类文件格式、Java虚拟机(JVM)和Java应用程序接口(Java API)。Java的平台无关性得益于JVM,它在不同操作系统和...

    深入理解JVM1

    深入理解JVM对于Java开发者至关重要,因为它揭示了Java程序如何在运行时环境中执行。本文将探讨JVM的工作原理、内部结构以及Java字节码的执行过程。 首先,JVM(Java Virtual Machine)是Java运行时环境(JRE)的...

Global site tag (gtag.js) - Google Analytics