JVM&内存管理,
JVM&内存管理,
JAVA虚拟机简介:
• JAVA平台的 个重要组成部分.
• JAVA应用的运行平台
JAVA RunTime Environment JRE(运行时,非开发目的设计)
• 虚拟机
• 一系列标准类库
• JAVA应用所使用的
Java Development Kit JDK
• 面向开发.
• 包含JRE.
虚拟机简介:
• 所有运行在虚拟机里面的程序都会编译成小的字节码格式(.class file).
• Jar文件包含一系列class文件
• JIT技术(Just In Time)
• 把字节码转换为本地代码
• 常用的VM执行技术
• 启动时较慢,因为要做bytecdoe compilation
HOTSPOT 架构:
• HotSpot是sun java虚拟机技术.
• VM持续的分析程序性能热点(HotSpot),最经常被执行的代码/
• Hot Spots会被高度优化.
Server模式和Client模式
• server模式启动比较慢,但是运行速度得到了优化(生产环境使用)
• client模式启动比较快,但是运行期响应没有Server模式的优化(个人PC服务开发和测试)
查看JVM的Server服务器端环境和Client客户端环境.
java -version //查看JVM默认的环境
java version "1.6.0_22"
Java(TM) SE Runtime Environment (build 1.6.0_22-b04)
Java HotSpot(TM) Client VM (build 17.1-b03, mixed mode, sharing)java -client -version //查看JVM的客户端环境
java -server -version //查看JVM的服务器端环境
如果安装了公共的JRE环境 执行 java -server -version 会报错:(在安装的时候不选择安装公共JRE即可解决,Linux下无此问题)
“Error: no `server' JVM at `C:/Program Files/Java/jre6/bin/server/jvm.dll'.”x`
虚拟机模式的切换
找到JDK的指定目录的文件:%JAVA_HOME%\jre\lib\i386\jvm.cfg
打开后的内容为:(互换下位置即可)
-client KNOWN
-server KNOWN
-hotspot ALIASED_TO -client
-classic WARN
-native ERROR
-green ERROR
HOTSPOT 架构:
• 使用本地线程
• 使用操作系统stack区和线程模型
• 垃圾回收
• 大多数对象在创建后很短的时间内就会没有任何对象再使用它了 即未被其它对象引用 它了,即未被其它对象引用。
• 大多数一直被使用的对象(老对象)很少引用新创建的对象。
HotSpot的内存管理
• 64位模式 方便虚拟机使用更多的物理内存
• 自动• 在Heap区申请和释放对象空间
• 通过分区,区按照“年代”划分。“年代”是对象池
• GC发生在一个“区”满了的情况• 通过设置JVM内存参数来管理VM内存,简单有效
内存设置
•影响因素
• 数据处理模型(32位或者64位操作系统)
• Heap的大小不能超过不同操作系统的进程寻址范围 32位 • Heap的大小不能超过不同操作系统的进程寻址范围,32位应用程序寻址空间2G• 64位没有限制• 系统地虚拟内存总数
• 系统的物理内存总数
OOM分析与处理
• 常见的代码问题
• 使用Boolean和Integer替代 bool和int• 使用String或者String数组 应该多使用StringBuffer • 使用String或者String数组,应该多使用StringBuffer• 不合理的使用集合对象• 避免过深层次类调用• 变量只有在用到它的时候才定义和实例化,减少对象的生命周期•尽量避免使用static变量 类内私有常量可以用final来代替 • 尽量避免使用static变量,类内私有常量可以用final来代替。• 尽早释放无用对象的引用。
• 常见的代码问题
• 尽量少用finalize函数。它会加大GC的工作量• 尽量避免在类的默认构造器中创建 初始化大量的对象 防止 • 尽量避免在类的默认构造器中创建、初始化大量的对象,防止在调用其自类的构造器时造成不必要的内存资源浪费。• 尽量避免强制系统做垃圾内存的回收,增长系统做垃圾回收的最终时间 最终时间。• 尽量避免显式申请数组空间。• 尽量做远程方法调用类应用开发时使用瞬间值变量 除非远程 • 尽量做远程方法调用类应用开发时使用瞬间值变量,除非远程调用端需要获取该瞬间值变量的值• 尽量在合适的场景下使用对象池技术以提高系统性能。
相关文章
- 暂无相关文章
用户点评