JVM_内存_张文治.pptx

JVM_内存_张文治

Java开发基础(二)——JVM基础知识内容主要来自网络,水平有限,若有错漏,敬请指正测试部 张文治JVM基础知识:HotSpotJVM( Java虚拟机)HotSpot是Sun(Oracle)的JVM实现,用来代替JIT(Just in Time),将常用的代码编译为本地代码提高性能,当前正在与Jrockit融合。JDK1.8中移位String常量池;取消PermGen,代之Metaspace。Oracle JDK(Sun)Java 7 Update 40:从Jrockit VMs移植两个工具,以Oracle JDK专有、闭源的形式提供。Java Flight Recorder,用于收集和评估性能数据,Java Mission Control(JMC),相似JVisual VM,不同点是能够在收集的数据上创建新的视图。Open JDK是Sun在2006年末把Java开源而形成的项目。Oracle的项目发布经理Joe Darcy在OSCON 2011上对两者关系的介绍如下:Jrockit VMs、IBM J9 VMJVM基础知识:生命周期JVM的生命周期JVM实例的诞生:当启动一个Java程序时,一个JVM实例就产生了,任何一个拥有public static void main(String[]args)函数的class都可以作为JVM实例运行的起点。JVM实例的运行:main()作为该程序初始线程的起点,任何其他线程均由该线程启动。JVM内部有两种线程:守护线程和非守护线程,main()属于非守护线程,守护线程通常由JVM自己使用,Java程序也可以标明自己创建的线程是守护线程。VM实例的消亡:当程序中的所有非守护线程都终止时,JVM才退出;若安全管理器允许,程序也可以使用Runtime类或者System.exit()来退出。JVM实例和JVM执行引擎实例JVM实例对应了一个独立运行的Java程序,JVM实例是进程级别JVM执行引擎实例则对应了属于用户运行程序的线程,执行引擎是线程级别JVM基础知识:架构规范JVM Specification中的JVM整体架构Runtime Data Area(运行时数据区)组件JVM中的内存Class Loader(类加载)子系统装载class文件的内容到 Runtime data area 中的method area(方法区域)Execution Engine(执行引擎)子系统执行classes中的指令。每个运行中的线程都有一个 Execution engine的实例。Native Interface(本地接口)组件JNI,与native libraries 交互,是其它编程语言交互的接口JVM基础知识:内存规范Runtime data area?HeapMethod areaJava stackProgram counterNative method stackJava开发基础(二)——JVM内存管理内容主要来自网络,水平有限,若有错漏,敬请指正测试部 张文治JVM内存管理:内存区域JAVA虚机(JVM):主要管理两种类型的内存,堆(年轻代、老年代)和非堆(包含永久代)。Sun HotSpot 使用分代收集器,它把堆分为三个主要的域:年轻代、老年代、永久代。Young:主要是用来存放年轻的对象。Old:主要存放应用程序中生命周期长的内存对象。Permanent:是指内存的永久保存区域,主要存放Class和Meta的信息。Class在被Loader时就会被放到PermGen space中,若JEE应用类库很大,此值需相应调大。JVM内存管理:内存区域Java?HotSpot?VM?Options-X开头的是非标准选项,不保证被所有的?JVM?实现都支持。-XX开头的是不稳定、不建议随便使用的选项。JVM内存管理:堆堆(Heap Memory):Java 虚拟机的“堆”是运行时数据区域,所有类实例和数组的内存均从此处分配。动态分配内存,存取较慢。Eden Space(伊甸园)、Survivor Space(幸存者区)、Tenured Generation(老年代-养老区)堆内存分配:-Xms2048m:堆内存初始值2048M,默认(不设置)是物理内存的1/64。-Xmx2048m:堆内存最大值2048M,默认是物理内存的1/4。-XX:NewSize=768m :设置年轻代初始值为768M。-XX:MaxnewSize=768m:设置年轻代最大值为768M。–Xmn768m(Eden+ 2 Survivor space):设置年轻代初始值为768M。推荐值为堆内存的3/8。-XX:NewRatio=3:设置年轻代与老年代所占比值为1:3,年轻代占整个堆栈的1/4,默认年轻代为堆的1

文档评论(0)

1亿VIP精品文档

相关文档