JAVA的缓存应用.ppt
《JAVA的缓存应用.ppt》由会员分享,可在线阅读,更多相关《JAVA的缓存应用.ppt(48页珍藏版)》请在三一办公上搜索。
1、JAVA缓存体系及应用,目录,带着问题来,带着答案走JAVA内存体系介绍基本缓存的使用缓存框架的介绍内存溢出状况分析内存检查工具的使用,问题,JVM内存的分配原理?JVM启动的时候如何正确的设置内存参数?JVM内存是不是越大越好?什么情况下大家用到了缓存处理,很好的解决了问题?缓存框架帮我们解决哪些问题,为什么要使用缓存框架?你是如何进行内存溢出检查的?,JAVA内存体系介绍,操作系统的内存使用和管理JVM内存的分类JVM内存参数设置及作用垃圾回收机制内存实时状态查询,操作系统的内存使用和管理,Windows内存使用虚拟内存是Windows管理所有可用内存的方式。Windows 32位为每个进
2、程分配了4G的虚拟地址空间(用于表示该进程有这么多的空间可用),4G是由于操作系统+CPU是32位的,寻址空间就只有2的32次方,因此得出4G的存储空间。Windows操作系统默认会给程序和系统预留2G的内存寻址空间;我们可以通过配置将应用程序的最大内存配置到3G。4G配置 但电脑显示最多3.5内存。因为:xp/vista 32bit在安装4G内存后会分配其中部分内存作为设备保留的内存地址。64位就不存在4GB空间的束缚了。,Application 2GB用于程序存放代码,数据,堆栈,自由存储区,Windows System 2GB共享内存,所有进程都用到的内存区域,操作系统规定:一个应用程序
3、所能承载的最大寻址内存是2GB(可以通过配置改变到3GB),因为主要是为了预留一部分给操作系统使用,叫做共享内存区。所以虽然一个程序理论上可以访问4GB内存,但是实际上只能分配2GB的空间。,所以我们可以得出2个程序的最大使用内存是:2G(共享内存)+2*2G(程序内存)=6G,为什么我的电脑是2G内存,但是在系统可以使用超过2G的内存空间,大概有4G!,页面文件,以上情况是由于页面文件控制的。这里很容易混淆一个概念,认为以上windows磁盘用来充当内存的叫做虚拟内存,其实windows管理的内存都叫做虚拟内存。所以虚拟内存是:RAM(物理内存)+页面文件(磁盘内存)页面文件即当内存不够时系
4、统会拿出一部分硬盘空间来充当内存使用,当内存占用完时,电脑就会自动调用硬盘来充当内存,以缓解内存的紧张。比如:你的机器有2G内存,当使用的内存超过2G时,超过的部分就会将硬盘上的文件映射成内存来使用。按照这样逻辑我们不难得出只要虚拟内存够大,我们就可以无限制的使用,不过考虑到性能这也是不切实际的。以上只是很浅显的一个理解,其实Windows虚拟内存的管理是一个比较复杂的处理过程,由于windows的多任务机制,再配合虚拟内存,其实windows运行的程序所占用的内存是远远超过可分配内存的。,应用程序1,内存,磁盘,1,激活应用程序,2,分配相应的内存,3,4,回收内存,5,将内存内容映射到页面
5、文件并重新建立映射,最小化应用程序,6,7,关闭应用程序,释放虚拟内存,应用程序2,8,9,切换应用程序2,读取页面文件放到物理内存中并重新建立映射,10,操作系统来调度,当物理内存吃紧的情况下,会产生大量的页入,页出动作,从而降低系统运行速度,3-5:表示页入动作8-10:表示页出动作,再来看看任务管理器,总数:RAM物理内存总大小可用数:当前RAM内存还剩余多少系统缓存:指的是系统共享内存使用量,提交更改(前面的):实际是虚拟内存使用量,包括RAM和页面文件提交更改(后面的):虚拟内存的总量总RAM+总的页面文件,进程内存使用量,该数据指的是程序独占RAM内存和使用到的系统共享内存因为有共
6、享成分在里面,所以所有程序内存加起来不一定等于系统RAM使用的总量。,虚拟内存大小,指的是程序所用到的所有2G虚拟内存的寻址空间大小,一般会包含在RAM、页面文件、exe和dll中。,关于Linux的内存管理,Windows管理内存更加规范和统一,通过统一的内存映射和跟踪机制来完成,但是同时也失去了一定的灵活性。Linux管理内存不是很规范,省去了内存映射,而是直接将内存提交到页面,并且只有当页面被真正使用了,才会将其绑定到内存中中。,JVM内存分类,系统级内存分配JVM的内存分配机制其实也是基于操作系统分配机制JVM最大的内存在win32下是2GJVM的内存使用情况实际被分为:JVM虚拟机、
7、JAVA程序的字节码(classes)、系统内存空间Native Heap(主要用于存放线程和一些系统级的对象和操作)、JAVA内存Java Heap(真正的存放Java Object 的内存区域),Application 2GB用于程序存放代码,数据,堆栈,自由存储区,Windows System 2GB共享内存,所有进程都用到的内存区域,Jvm,Permanet,Native Heap,Java Heap,System lib,JAVA程序本身使用的内存区域,存放线程、系统变量、一些类似Runtime的操作,存放具体的Classes、Jar信息,注意:所以我们在给Java程序分配内存时是分
8、不到2G空间的,JNI的调用,JVM内存分配管理,JVM如何管理内存永久存储区(Permanent Space):永久存储区是JVM的驻留内存,用于存放JDK自身所携带的Class,Interface的元数据。堆空间(The Heap Space):JAVA对象的出生,成长,死亡都在这个区域完成;堆空间又分为养老区和新生区。新生区(Young(New)generation space):新生区的作用包括JAVA对象的创建和从JAVA对象中筛选出能进入养老区的JAVA对象。伊甸园(Eden space):JAVA对空间中的所有对象在此出生,该区的名字因此而得名。也即是说当你的JAVA程序运行时,
9、需要创建新的对象,JVM将在该区为你创建一个指定的对象供程序使用。创建对象的依据即是永久存储区中的元数据。幸存者0区(Survivor 0 space)和幸存者1区(Survivor1 space):当伊甸园的控件用完时,程序又需要创建对象;此时JVM的垃圾回收器将对伊甸园区进行垃圾回收,将伊甸园区中的不再被其他对象所引用的对象进行销毁工作。同时将伊甸园中的还有其他对象引用的对象移动到幸存者0区。如果0区域也没有空间了就会向1区移动。养老区(Tenure(Old)generation space):用于保存从新生区筛选出来的JAVA对象。,JAVA所有管理的内存,永久内存区域(Permanen
10、t):存放Classes、Jar等数据,养老区(Tenured)(其实可以看作是”终极”幸存者),伊甸园区(eden),幸存者区0(survivor0)From,幸存者区1(survivor1)To,堆空间(Java Heap Space),JVM内存参数设置,Permagnet(永久区),Extend Virtual(永久区虚拟内存),Tenured(养老区),Extend Virtual(养老区虚拟内存),Enden(伊甸园),Survivor0(幸存者0),Survivor0(幸存者1),Extend Virtual(幸存者区虚拟内存),-XX:MaxPermSize,-XX:PermS
11、ize,-Xmx(最大内存配置),-Xms(最小内存配置,初始养老区+年轻区),-XX:MaxNewSize(最大年轻区大小),-XX:NewSize(年轻区大小),-XX:SurvivorRatio(设置年轻代中Eden区与Survivor区的大小比值),-XX:NewRatio(设置年轻代(包括Eden和两个Survivor区)与年老代的比值),Permagnent 空间,Java Heap Space空间,垃圾回收机制,首先当启动J2EE应用服务器时,JVM随之启动,并将JDK的类和接口,应用服务器运行时需要的类和接口以及J2EE应用的类和接口定义文件也及 编译后的Class文件或JAR
12、包中的Class文件装载到JVM的永久存储区。在伊甸园中创建JVM,应用服务器运行时必须的JAVA对象,创建 J2EE应用启动时必须创建的JAVA对象;J2EE应用启动完毕,可对外提供服务。JVM在伊甸园区根据用户的每次请求创建相应的JAVA对象,当伊甸园的空间不足以用来创建新JAVA对象的时候,JVM的垃圾回收器执行对伊甸园区的垃 圾回收工作,销毁那些不再被其他对象引用的JAVA对象(如果该对象仅仅被一个没有其他对象引用的对象引用的话,此对象也被归为没有存在的必要,依此类 推),并将那些被其他对象所引用的JAVA对象移动到幸存者0区。如果幸存者0区有足够控件存放则直接放到幸存者0区;如果幸存
13、者0区没有足够空间存放,则JVM的垃圾回收器执行对幸存者0区的垃圾回收工作,销毁那些不 再被其他对象引用的JAVA对象(如果该对象仅仅被一个没有其他对象引用的对象引用的话,此对象也被归为没有存在的必要,依此类推),并将那些被其他对象 所引用的JAVA对象移动到幸存者1区。如果幸存者1区有足够控件存放则直接放到幸存者1区;如果幸存者0区没有足够空间存放,则JVM的垃圾回收器执行对幸存者0区的垃圾回收工作,销毁那些不 再被其他对象引用的JAVA对象(如果该对象仅仅被一个没有其他对象引用的对象引用的话,此对象也被归为没有存在的必要,依此类推),并将那些被其他对象 所引用的JAVA对象移动到养老区。如
14、果养老区有足够控件存放则直接放到养老区;如果养老区没有足够空间存放,则JVM的垃圾回收器执行对养老区区的垃圾回收工作,销毁那些不再被其他对象引 用的JAVA对象(如果该对象仅仅被一个没有其他对象引用的对象引用的话,此对象也被归为没有存在的必要,依此类推),并保留那些被其他对象所引用的 JAVA对象。如果到最后养老区,幸存者1区,幸存者0区和伊甸园区都没有空间的话,则JVM会报告“JVM堆空间溢出(java.lang.OutOfMemoryError:Java heap space)”,也即是在堆空间没有空间来创建对象。这就是JVM的内存分区管理,相比不分区来说;一般情况下,垃圾回收的速度要快很
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JAVA 缓存 应用
链接地址:https://www.31ppt.com/p-5436121.html