jvm 内存管理机制分析与oom问题浅析

jvm 内存管理机制分析与oom问题浅析

ID:15970461

大小:1.16 MB

页数:60页

时间:2018-08-06

jvm 内存管理机制分析与oom问题浅析_第1页
jvm 内存管理机制分析与oom问题浅析_第2页
jvm 内存管理机制分析与oom问题浅析_第3页
jvm 内存管理机制分析与oom问题浅析_第4页
jvm 内存管理机制分析与oom问题浅析_第5页
资源描述:

《jvm 内存管理机制分析与oom问题浅析》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、JVM内存管理机制分析与OOM问题浅析主讲内容如下了解Java基本内存管理基本概念了解Jvm参数的参数配置及其作用了解发生内存不足/内存泄露错误的主要原因如何诊断内存不足/内存泄露使用分析工具分析内存不足和内存泄露OOM错误实例了解Java基本内存管理基本概念Java内存包括哪几部分?Java堆内存(Heap)Permanent区(Sun/HpJDK)本地内存(NativeMemory)Java堆内存(Heap):是JVM用于分配Java对象的内存,包含活动对象和freed对象堆大小使用java命令中的–Xms(最小)–Xm

2、x(最大)标志来定义。Permanent区:是SunJDK和HPJDK用来加载类(class)的专门的内存区这个区域不归属Java堆内存(Heap)范围如果Java应用很大,例如类(class)很多,那么建议增大这个区域的大小来满足加载这些类的内存需求通过–XX:PermSize=***M–XX:MaxPermSize=***M调整了解Java基本内存管理基本概念本地内存(NativeMemory)是JVM用于其内部操作的本地内存(非Java内存)JNI代码和第三方本地模块(例如,本地JDBC驱动 程序)也使用本地内存最大本

3、地内存大小取决于以下因素:操作系统进程内存大小限制已经指定用于Java堆的内存进程的内存大小等于什么?32位操作系统,理论最大值2的32次方=4G64位操作系统,理论最大值是一个很大的数字进程内存=Java(Heap)+本地内存+加载的可执行文件和库+操作系统保留内存了解Java基本内存管理基本概念Java堆内存大小的决定因素:进程大小限制,例如:<=4G“加载的可执行文件和库+系统保留内存”不同操作系统和应用不一样,通常在百M到1G间JVM的本地内存在不同的JDK之间也不一样。JRockit相对SunJDK,做了非常好的J

4、IT优化,但是本地内存要求更多的空间通常Java堆内存大小推荐不大于2G大部分操作系统默认也上不到2G,需要做内核调整--大内存模式Java堆内存的大内存模式:PlatformDefaultMaximumHeapSizeWindowsona64bitplatform75%oftotalphysicalmemoryupto3GBLinuxorSolarisona64bitplatform75%ofphysicalmemoryupto3GBWindowsona32bitplatform75%oftotalphysicalmemo

5、ryupto1GBLinuxorSolarisona32bitplatform75%ofphysicalmemoryupto1GB了解Java基本内存管理基本概念垃圾回收(GarbageCollection,GC)的作用:JVM自动检测和释放不再使用的内存。Java运行时JVM会执行GC,这样程序员不再需要显式 释放对象。通常在空闲内存降低到某一水平或内存分配达到某一 数量后自动触发。各种JDK的垃圾回收都有多种算法和策略(预了解详情请参考附件)以下OutOfMemory简称OOM以下MemoryLeak简称MLJava内存

6、的两种表现形式Java内存问题的两种表现形式:内存溢出错误(OOM)内存泄露错误(ML)现在先不管这两种内存问题是什么愿意导致的,但是最终它们都会抛出同样的内容:java.lang.OutOfMemoryError共同点是什么呢?没有空闲内存可供JVM或本地代码用于分配新对象或内存块通常最终的状态就会导致OOM错误在Java堆或本地内存中都可能发生不同点是什么呢?ML是已经分配好的内存或对象,当不再需要,没有得到释放而OOM则是没有足够的空间来供jvm分配新的内存块ML的内存曲线总体上是一条斜向上的曲线而OOM不是那样子的J

7、ava内存问题的两个主要发生区段Java内存问题的两个主要发生区段:Java内存--包括heap堆内存和permanent区本地内存--包括JVM进程内存和java使用的第三方本地代码Java内存不足Java堆内存heap不足,无法再分配新对象或内存块permanent区内存不足,无法再加载类到内存中(Sun&HpJDK)本地内存不足物理内存不够,无法再得到内存第三方本地代码有内存泄漏的BugJVM的JIT或者JVM本身的Bug(很古老的技术啦)物理内存和虚拟内存计算机的可寻址空间=RAM+交换空间进程A的虚拟内存进程D的虚

8、拟内存进程B的虚拟内存进程C的虚拟内存RAM交换空间进程的虚拟内存由OS映射到物理内存本地内存可执行文件/库Os使用本地内存Os使用本地内存Os使用本地内存Os使用JavaheapJavaheapJavaheapJavaheap可执行文件/库可执行文件/库可执行文件/库当然了,进程大小受到

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。