jvm
2016-10-31 12:26:10 0 举报
AI智能生成
Java虚拟机(JVM)是Java技术的核心组成部分,它是一个虚拟的计算机,负责执行Java字节码。JVM的设计目标是提供一个运行环境,使得Java程序可以在任何硬件和操作系统上运行,实现“一次编写,到处运行”的理念。JVM将Java源代码编译成字节码,然后在JVM上解释执行或通过即时编译器编译成本地机器代码。JVM还负责内存管理、垃圾回收和异常处理等任务,确保Java程序的稳定性和高效性。
作者其他创作
大纲/内容
GC算法
老牌:引用计数法
缺点
引用和去引用伴随着加法和减法,影响性能
很难处理循环引用
老年代使用算法
标记清除法
从根节点出发,标记可以到达的对象,即是存活对象。清除不可到达的对象
标记压缩法
新生代算法
复制算法
非垃圾对象
可触及性
从根对象可以到达
根
栈中引用的对象
方法区的静态成员或常量引用的对象
JNI方法栈中的本地对象
垃圾回收器
串行回收器
-XX:+UseSerialGC
古老稳定,效率高,停顿时间长
并行收集器
ParNew收集器
-XX:+UseParNewGC
多线程,需要多核支持,-XX:ParallelGCThreads限制线程数量
Parallel收集器
建议
新生代占堆的3/8
幸存代占新生代的1/10
发送OOM时,建议使用dump出堆,有利于排查
-Xms | JVM初始分配的堆内存大小,默认是物理内存的1/64。 |
-Xmx | JVM最大分配的堆内存大小,默认是物理内存的1/4。 |
-XX:PermSize | JVM初始分配的非堆内存大小,默认是物理内存的1/64。 |
-XX:MaxPermSize | JVM最大分配的非堆内存大小,默认是物理内存的1/4。 |
-XX:NewSize | JVM初始分配的新生代堆区域内存大小。 |
-XX:MaxNewSize | JVM最大分配的新生代堆区域内存大小。 |
-XX:ReservedCodeCacheSize | 编译代码时的缓存空间大小。 |
多跑线程,减少栈的大小
每一个线程对应一个栈
栈空间大小,决定了递归调用的深度
GC工作时,其他线程停止工作,导致全局停顿
0 条评论
下一页