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

探索JVM

    博客分类:
  • jvm
阅读更多
   
     从今天起,算是给自己一个约束吧..坚持每周必要写一篇技术文章,养成一个习惯,时间久了就能形成知识体系。

     今天来对JVM内存分配及JAVA内存回收、OOM异常等知识点做下复习

     1) JAVA 内存分配
        java内存分为六大类,堆、栈、寄存器、静态域、常量池、非RAM,这里主要介绍的是堆和栈。

        JAVA每个线程都会有相对应的栈来维持其运作,JDK1.5以前默认的栈空间是256KB,现在默认的空间是1MB,当用户像web应用服务器发送请求的时候,tomcat会从线程池中拿出一个线程相应用户请求,相对应的此线程也会到JVM中申请栈空间。这里要声明下,线程不是与“用户”绑定,而是与“请求”绑定,举个简单的实例,用户发送请求的时候,如果与请求相对应的线程没有执行完,即使Session过期,此线程也会继续执行。

        JAVA堆内存是JVM进程中唯一的,分为新生区、幸存区、养老区、永久存储区、初始分配内存时候,对象放在新生区中,JVM会把不经常引用的内存移至到伊甸区,最后把部分移至到养老区,当类运行的时候,JAVA会把类信息移至到永久存储区,普通GC不会回收永久存储区对象。

        静态变量会放在方法区中、实例变量会放在堆中,相对应引用会放在不同的栈中,只有当运行的时候才会对类变量进行内存分配。

      2) javaGC

        javaGC分为普通GC和FULL GC,普通GC时间比较短,会回收新生区、幸存区、FULL GC会移除堆中所有空间的未引用对象,JVM GC的时候会停止对外“服务”,因此减少GC的时间也是JVM优化的“点”之一,JVM有不同的回收器。不同的回收算法以后我会研究,这里待续。

      3)OOM异常总结

        Java heap space java堆溢出
        PermGen space   方法区溢出或者常量池溢出
        unable to create new native 线程太多溢出
        StackOverflowError   栈空间不够溢出

        相对应的溢出方式我们有相对应的调节方法,在工作中如果发现OOM问题,要以解决问题优先,其次是经验总结,把问题记录下来长久下来形成知识体系~
       
分享到:
评论

相关推荐

    深入探索JVM垃圾回收:ARM服务器垃圾回收的挑战和优化.docx

    深入探索 JVM 垃圾回收:ARM 服务器垃圾回收的挑战和优化 JVM 垃圾回收是 Java 内存管理的重要组成部分,其主要职责是自动释放不再被应用程序使用的内存。在现代计算机系统中,内存是一种宝贵的资源,其有效管理...

    探索JVM底层奥秘ClassLoader源码分析与案例讲解

    Java虚拟机(JVM)是Java程序运行的基础,它负责加载、验证、执行字节码。在JVM的运行机制中,ClassLoader起着至关重要的作用。ClassLoader负责查找并加载类到JVM中,使得程序得以运行。本篇将深入探讨ClassLoader的...

    Java高级面试第二套2.探索JVM底层奥秘ClassLoader源码分析与案例讲解

    微信小程序详细图文教程 泉州大白网络科技 目录 一.微信小程序申请 二....1.申请服务器 2.部署服务器 3.域名申请和配置 三....一....申请,并认证(未认证不能发布,认证需要300元,目前只支持企业认证)详细见官网说明。...

    jvmjava,java实现的JVM。.zip

    此外,还可以探索JVM的最新特性,如G1垃圾收集器、Metaspace等。 总结,"jvmjava"项目是一个极好的学习资源,它使开发者有机会亲手构建一个JVM,从底层理解Java应用程序的运行机制。无论是初学者还是经验丰富的...

    深入Java虚拟机 JVM pdf

    至于“inside JVM光盘”内容,通常会包含书中提到的源代码示例、补充材料和作者的其他资源,这将为读者提供一个实践和探索JVM的平台,加深对理论知识的理解。 总的来说,《深入Java虚拟机》是一本深度与广度兼备的...

    JAVA8虚拟机(jvm)规范_Chinese version.rar

    Java虚拟机(JVM)是Java程序运行的核心组件,它负责解释和执行字节码,为Java应用程序提供了一个跨平台的运行环境。《JAVA8虚拟机(jvm)规范_Chinese version...不断探索JVM的奥秘,有助于成为一名更优秀的Java开发者。

    mini-jvm使用 Java 8 实现 jvm

    尽管mini-jvm并不具备完整JVM的所有功能,但它提供了一个可操作的平台,让开发者能亲手实践并探索JVM的奥秘。同时,这个过程也能加深对Java 8新特性的理解,尤其是流API和lambda表达式在处理字节码解析和指令执行...

    深入理解JVM

    《深入理解JVM》这份资料主要探讨了Java虚拟机(JVM)的各个方面,包括其工作原理、内存管理、性能优化以及与编程实践的结合。...通过深入探索JVM,开发者可以更好地驾驭这个强大的平台,编写出更加高效、可靠的代码。

    JVM 6 详细参数(中文版)

    ### JVM 6 详细参数分析 #### 概述 本文档深入探讨了Java 6 (JDK 6) 的JVM参数配置,旨在为开发者提供一份详尽的指南,帮助理解并合理设置JVM参数...希望本文档能够成为您探索JVM参数设置道路上的一份宝贵参考资料。

    java虚拟机深入JVM内核—原理、诊断与优化视频教程网盘下载

    本教程将带你探索JVM的奥秘,从内存管理到垃圾回收,从编译优化到故障排查,全方位解析JVM的工作机制。 一、JVM结构与原理 1. 类装载子系统:负责加载、验证、解析和初始化类文件。 2. 运行时数据区:包括堆、方法...

    JVM 学习笔记(Java虚拟机)

    **JVM学习笔记(Java虚拟机)** Java虚拟机(JVM)是Java语言的核心组成部分,它是Java程序运行的平台,负责解释和执行字节码。深入理解JVM对于优化Java应用...不断探索JVM的细节,有助于成为一名优秀的Java开发者。

    jvm_code-master.rar

    总之,"jvm_code-master"这个压缩包为学习者提供了一个实践和探索JVM及Java高级特性的宝贵资源。通过实际操作和分析代码,可以更直观地理解和掌握这些复杂的概念,从而提升编程技能和解决问题的能力。

    开源项目-zxh0-jvm.go.zip

    这个项目的目的是为了帮助开发者理解JVM的工作原理,并提供一个可交互的平台来学习和探索JVM的内部机制。 1. **Java虚拟机(JVM)概述** JVM是Java平台的核心组件,它是Java程序的运行环境。它负责解析和执行字节...

    jvm学习笔记

    《JVM学习笔记》 Java虚拟机(JVM)是Java平台的核心组成部分,它负责运行所有的Java应用程序。这篇笔记将深入探讨JVM的工作原理、内存管理、类加载机制以及...希望这篇笔记能为你在探索JVM的道路上提供有价值的参考。

    深入了解jvm(Inside java virture machine)

    这篇博文和配套的《Inside Java Virtual Machine》CHM文档将带你探索JVM的奥秘。 1. **JVM架构** JVM由类加载器、运行时数据区、执行引擎、本地方法接口和本地库组成。每个部分都有其独特的功能,如类加载器负责...

    java虚拟机_JVM高级特性与实践最新版

    《深入理解Java虚拟机_JVM高级特性与最佳实践 第2版》是一本专注于Java开发者深入探索JVM(Java Virtual Machine)的重要参考资料。本书全面讲解了Java虚拟机的内部工作机制,涵盖了JVM的高级特性和最佳实践,旨在...

    class的实例在JVM中的内部表示

    在Java编程语言中,`class`的实例是对象的基础,它们在JVM(Java虚拟机)内部是如何表示的呢?本文将深入探讨这一主题。...通过阅读《深入理解Java虚拟机》等专业书籍,开发者可以更深入地探索JVM的工作原理。

    java-benchmarks:一些用于理解探索 jvm 行为的基准

    这些基准测试可以帮助我们深入理解JVM(Java虚拟机)的行为,从而做出针对性的优化决策。在"java-benchmarks"项目中,我们可以找到一系列针对不同场景和任务的测试用例,旨在揭示JVM在内存管理、垃圾收集、编译优化...

    java高级进阶知识

    《深入理解Java虚拟机:JVM高级特性与最佳实践》是Java开发者深入探索JVM的必备书籍,尤其对于想要在Java领域进一步提升的程序员来说,它提供了丰富的理论基础和实践经验。这本书的第二版更是对原有的内容进行了更新...

Global site tag (gtag.js) - Google Analytics