`
mushme
  • 浏览: 790159 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

mark几个JVM的知识

JVM 
阅读更多
原帖地址:http://www.iteye.com/topic/821872
1:类变量和实例变量有什么区别?
静态变量是类变量,非静态变量是实例变量,直白的说,有static修饰的变量是静态变量,没有static修饰的变量是实例变量。静态变量存在方法区中,实例变量存在堆内存中。
2:为什么会产生OutOfMemory产生?
一句话:Heap内存中没有足够的可用内存了。这句话要好好理解,不是说Heap没有内存了,是说新申请内存的对象大于Heap空闲内存,比如现在Heap还空闲1M,但是新申请的内存需要1.1M,于是就会报OutOfMemory了,可能以后的对象申请的内存都只要0.9M,于是就只出现一次OutOfMemory,GC也正常了,看起来像偶发事件,就是这么回事。       但如果此时GC没有回收就会产生挂起情况,系统不响应了。

3:我产生的对象不多呀,为什么还会产生OutOfMemory?
你继承层次忒多了,Heap中 产生的对象是先产生 父类,然后才产生子类,明白不?

4:OutOfMemory错误分几种?
分两种,分别是“OutOfMemoryError:java heap size”和”OutOfMemoryError: PermGen space”,两种都是内存溢出,heap size是说申请不到新的内存了,这个很常见,检查应用或调整堆内存大小。
“PermGen space”是因为永久存储区满了,这个也很常见,一般在热发布的环境中出现,是因为每次发布应用系统都不重启,久而久之永久存储区中的死对象太多导致新对象无法申请内存,一般重新启动一下即可。
分享到:
评论

相关推荐

    JVM详解与学习

    Sun JVM的内存管理包括以下几个关键部分: - **堆 (Heap)**:用于存储所有类实例和数组的对象。堆是所有线程共享的区域。 - **方法区 (Method Area)**:存储已加载类的信息、常量、静态变量等。方法区也是所有线程...

    马士兵jvm调优笔记.docx

    Java程序运行时,其内存被划分为几个不同的区域,包括堆内存(Heap)、方法区(Method Area)、栈(Stack)、程序计数器(Program Counter Register)以及本地方法栈(Native Method Stack)。 - **堆内存**:是...

    JVM思维导图.mindnode.zip

    JVM内存主要分为以下几个区域: 1. **方法区(Method Area)**:存储类信息、常量、静态变量等元数据。 2. **堆(Heap)**:所有对象实例以及数组都在堆中分配内存,是JVM中最大的一块内存区域,被所有线程共享。 3...

    JVM演讲PPT分享

    运行时数据区是JVM内存模型的核心,主要包含以下几个部分: - 堆(Heap):存储所有的对象实例及数组数据。 - 栈(Stacks):每个线程包含一个栈,用于存储局部变量和方法调用。 - 方法区(Method Area):存储已被...

    jvm.rar_jvm

    在JVM中,内存被划分为几个主要区域,包括堆(Heap)、栈(Stack)、方法区(Method Area)、程序计数器(Program Counter Register)和本地方法栈(Native Method Stack)。堆是Java对象的主要存储区域,而栈则用于...

    JVM技术培训讲座

    JVM的内存模型主要包括以下几个方面: - **Eden区**:年轻代中的主要区域,新创建的对象首先在这里分配。 - **Survivor区**:分为From Survivor Space和To Survivor Space两部分,通过Minor GC进行对象的复制和筛选...

    jvm调优实战经验

    JVM内存分为两个主要部分:堆内存(Heap)和非堆内存(Non-Heap)。堆内存是JVM用来存储类实例和数组的主要区域,可以根据需求动态扩展或收缩。堆内存进一步细分为年轻代(Young Generation)、老年代(Old ...

    jvm高级特性与最佳实践

    在Java虚拟机中的高级特性方面,主要包括以下几个方面: 1. 动态编译技术:JVM能够根据程序运行的情况动态地将字节码编译为本地代码,提高执行效率。 2. 自适应优化:通过解释器和JIT(Just-In-Time)编译器的协作...

    JVM Tuning

    ### JVM Tuning 知识点详解 #### 一、Java内存管理 在Java虚拟机(JVM)中,内存管理是一项核心任务,它直接关系到应用的性能和稳定性。Java内存模型主要包括以下几个部分: 1. **堆内存 (Heap)**: 堆内存用于存储...

    JVM 底层原理最全知识总结

    JVM 内存主要分为以下几个区域: 1. **程序计数器(Program Counter Register)**:每个线程都有一个独立的程序计数器,用于记录当前线程正在执行的字节码指令地址。 2. **虚拟机栈(Java Virtual Machine Stack)...

    JVM面试要点

    类加载机制包括以下几个步骤: 1. 加载:查找并加载类的二进制数据,在 Java 堆中也创建一个 java.lang.Class 类的对象。 2. 连接:连接又包含三块内容:验证、准备、初始化。 * 验证:文件格式、元数据、字节码、...

    JVM内存有关知识点.docx

    JVM(Java Virtual Machine)内存管理是Java程序性能优化的关键因素,主要涉及以下几个核心区域: 1. **堆内存(Heap)**:Java堆是JVM管理的内存中最大的一块,它被所有线程共享。堆内存主要用于存放对象实例,...

    JVM历史发展和内存回收笔记.rar

    JVM在运行Java程序时,会创建几个不同的运行时数据区域,包括: 1. **程序计数器**:记录当前线程正在执行的字节码指令的地址。 2. **Java虚拟机栈**:每个线程都有自己的虚拟机栈,用于存储局部变量表、操作数栈、...

    openjdk8u60+jvm jdk源码+jvm源码

    2. **垃圾收集器(Garbage Collectors)**:OpenJDK 8 包含了几种不同的垃圾收集器,如 Serial GC、Parallel GC、CMS (Concurrent Mark Sweep) 和 G1 (Garbage-First)。每种GC策略都有其适用场景,通过调整这些参数...

    JAVA高级知识,JVM篇

    JVM内存主要分为以下几个部分: 1. **程序计数器(Program Counter Register)**: - **作用**:记录当前线程所执行的字节码指令地址。 - **特点**:每个线程拥有一个独立的程序计数器;当线程正在执行的是Java方法...

    【狂神说Java】JVM快速入门篇

    JVM主要由以下几个部分组成: 1. **类装载器(ClassLoader)**:负责加载.class文件,解析字节码并将其转换为运行时数据结构。 2. **运行时数据区(Run-Time Data Areas)**:包括方法区、堆、虚拟机栈、本地方法栈和...

    JVM深入解析(JVM specification 和Sun的JVM的内存机制)

    - CMS(Concurrent Mark Sweep)和G1 GC是现代JVM中常用的并发垃圾收集器,它们在减少停顿时间方面表现出色。 6. JVM的Class Loader和Execution Engine - 类加载器负责加载、验证、准备和初始化类文件,确保正确...

    JVM 调优演示-JVM.zip

    本资料"JVM 调优演示-JVM.zip"包含了一个名为"JVM-master"的项目,我们可以从以下几个方面来探讨JVM调优的相关知识点: 1. **垃圾收集器**:JVM中的垃圾收集器负责自动回收不再使用的对象所占用的内存。不同的垃圾...

    系统和JVM调优(面试突击)

    接下来,我们进入JVM调优的核心部分,它主要涉及以下几个方面: 1. **JVM内存设置**:Java应用的内存模型分为堆(Heap)、栈(Stack)、方法区(Method Area)、本地方法栈(Native Method Stack)和程序计数器(PC...

    Jvm优化的Java -Demo

    总结来说,"Jvm优化的Java - Demo"项目涵盖了以下几个关键知识点: 1. JVM参数设置:包括内存分配、GC策略等。 2. 日志打印:通过特定参数输出JVM内部信息和GC日志。 3. 垃圾收集算法的理解与选择:如ParNew、CMS、...

Global site tag (gtag.js) - Google Analytics