Java堆空间:它是什么?
来源:互联网 发布:最优路径b*算法 编辑:程序博客网 时间:2024/04/28 10:35
原文:https://javaeesupportpatterns.blogspot.com.ar/2012/02/java-heap-space-what-is-it.html
翻译:刘志鹏
在第一次学习Java时,经常花费在Java语言本身,面向对象的编程原理,设计模式,编译等方面,而不是Java VM本身,比如Java堆内存管理,垃圾收集,性能调优等常被视为“高级”的话题。
初学者Java或Java EE程序员最终创建他的第一个程序或Web应用程序。Java堆内存问题经常被观察到,比如OutOfMemoryError对于Java初学者甚至中间人来说可能是一个难题。
听起来很熟悉?
正确掌握Java VM堆空间是至关重要的; 包括Java初学者,所以我向你推荐的是在学习Java语言技术的同时学习这些原则。
您的Java VM基本上是您的Java程序的基础,它为您提供动态内存管理服务,垃圾回收,线程,IO和本地操作等等。
Java堆空间是运行时Java程序的内存“容器”,它向Java程序提供它所需的适当内存空间(Java堆,本地堆)并由JVM本身管理。
您的Java程序生命周期通常如下所示:
- Java程序编码(通过Eclipse IDE等),例如HelloWorld.java
- Java程序编译(Java编译器或第三方构建工具,如Apache Ant,Apache Maven等),例如HelloWord.class
- Java程序启动和运行时执行,例如通过HelloWorld.main()方法
Java堆空间主要适用于第三步:运行时执行。对于HotSpot VM,Java堆空间分为3个孤岛:
- 用于短期和长期居住对象的Java堆(YoungGen&OldGen空间)
- PermGen空间
- 原生堆
现在我们来剖析你的HelloWorld.class 程序,以便更好地理解。
- 在启动时,您的JVM会将一些静态程序和JDK库加载并缓存到本地堆中,包括本机库,映射文件(如程序Jar文件),线程(例如主启动线程)你的程序等
- 然后,您的JVM将把HelloWorld.class Java程序的“静态”数据存储到PermGen空间(类元数据,描述符..)
- 一旦启动程序,JVM就会管理并动态地将 Java程序的内存分配给Java Heap(YoungGen&OldGen)。这就是为什么了解Java程序需要多少内存以便可以通过-Xms和-Xmx JVM参数适当调整Java Heap控制的容量这一点非常重要。分析,堆转储分析使您可以确定您的Java程序内存占用量
- 最后,JVM还必须从Java堆空间动态释放内存,以避免程序不再需要; 这被称为垃圾收集过程。通过JVM详细的GC或您选择的监视工具(如Java VisualVM)可以轻松监视此过程。
听起来很复杂?好消息是,在过去的十年中,JVM的成熟度已经得到了显着的提高,并为您提供了开箱即用的工具,让您了解您的Java程序Java堆分配情况,并对其进行微调。
推荐阅读 Spring思维导图,让Spring不再难懂(mvc篇)
秒杀系统解决方案
提供一个免费学习和交流的场所
推荐阅读 Spring思维导图,让Spring不再难懂(mvc篇)
秒杀系统解决方案
提供一个免费学习和交流的场所
JAVA葵花宝典
同学,看你骨骼惊奇,差一部宝典估计就能上天了,扫码关注修炼
- Java堆空间:它是什么?
- java 堆空间 栈空间
- MAVEN 它是什么?
- web简单基础,它是什么?
- java 栈空间 和 堆空间
- Java栈空间和堆空间
- java堆空间(内存)
- 什么是对象的句柄?它是指针吗?它是引用吗?它是指向指针的指针?它是什么?
- 什么是对象的句柄?它是指针吗?它是引用吗?它是指向指针的指针?它是什么?
- 数据库是什么,它是做什么用的?
- 你猜它是个什么点
- CocoaPods 它是什么?如何运行的?
- java new 堆空间 简单实例 测试
- 5步避免Java堆空间错误
- java中的堆和栈空间
- 堆空间
- java堆,新生代,老年代,Eden空间,From Survivor空间,To Survivor空间
- block fomatting context 怎么应用的?它是什么?
- 算法题-数列的前n项之和及扩展
- 前端、后端、运维技能树思维导图,你在哪个阶段,码畜or码帝?
- 任务一 Samba服务器配置任务书
- 成功运作一个开源项目的 15 个要点
- 史上最简单的SpringCloud教程 | 第十三篇: 断路器聚合监控(Hystrix Turbine)
- Java堆空间:它是什么?
- win10系统同时装win7系统详细图解
- 实现select中指定option选中触发事件
- Spring思维导图,让Spring不再难懂(cache篇)
- 25岁社招进阿里,从电商到有赞新零售,他仅1年就打开了马云一直想做的新领域!
- 算法题-列出x-n之间素数并统计个数
- maven plugin develop
- 算法题-经典水仙花数
- Java编写网络打字游戏