JVM之---Java内存分配参数(第四篇)
2013-08-18 13:22
295 查看
1.内存分配参数---大纲
Ø如何设置堆内存Ø如何设置栈内存
Ø如何设置方法区
Ø如何设置对的分配比率
Ø设置参数打印堆栈;
ØJava程序的两种模式:Server&Client
2.设置堆内存
Ø设置最大堆内存Ø参数:-Xmx10M,表示堆内存最大为10M,如果超过10M则会出现内存溢出的异常。
Ø查看方法: maxMemory()
Ø设置最小堆内存
Ø参数:-Xms2M,系统初始化的时候就会分配2M内存给java程序。
Ø设置新生代内存
Ø参数1:-Xmn5M,表示堆内存中新生代内存大小为5M,如果超过则会向老年代申请空间。
Ø参数2:-XX:NewSize(最小的新生代大小)-XX:MaxNewSize(最大的新生代大小)
Ø-Xmn5M==-XX:NewSize5M –XX:MaxNewSize5M
Ø参数2不建议使用,会引起内存震荡。
3、方法区内存
Ø之前说过,对于使用了CGLib,Javassist,ASM等动态生成大量class类的框架尤其需要注意该内存的设置。Ø最小设置
Ø参数:-XX:PermSize=4M;
Ø解释:表示方法区最小的内存为4M,JVM初始化的时候就会分配至少4M的方法区内存。
Ø最大设置
Ø参数:-XX:MaxPermSize=10M
Ø解释:表示方法区最大的内存为10M,当动态扩展超过10M的时候就会出现内存溢出。
4、栈内存
Ø栈内存貌似没有设置最大最小的参数,根据我的理解配置的参数是最大的,也就是说最大不能超过,如果没有线程则不会分配,这样应该是合理的,他的生命周期和线程一样。Ø配置参数:-Xss10M
Ø解释:表示为没一个线程分配10M的空间
Ø注意事项:
Ø如果一个线程的内存使用超过了-Xss的设置则会抛出异常
Ø如果给栈内存设置较大,则同时开启的线程数必然减少。
Ø栈内存的大小还会影响到堆内存的大小;
5、分配比率
Ø堆的分配比率:Ø新生代:占据整个堆的1/4~1/3为最佳
Ø新生代和s区的分配:最好设置为8:1为最佳
Ø配置参数:-XX:SurvivorRatio=8
Ø新生代和老年代的分配:最好设置为2:1为最佳
Ø配置参数:-XX:NewRatio=2
6、参数总结
配置 | 说明 |
-Xms | 设置堆内存的最小值 |
-Xmx | 设置堆内存的最大值 |
-Xss | 设置栈内存的大小 |
-XX:MinHeapFreeRatio | 设置堆内存的最小空闲比例 |
-XX:MaxHeapFreeRatio | 这是堆内存的最大空闲比例 |
-XX:NewSize | 设置新生代的最小内存值 |
-XX:NewMaxSize | 设置新生代的最大内存值 |
-XX:SurviorRatio | 设置Eden区和Survior区的比例 |
-XX:MaxPermSize | 设置持久代的最大值 |
-XX:PermSize | 设置持久代的最小值 |
-XX:TargetSurvivorRatio | 设置survivor区的可使用率 |
7、打印GC信息
Ø不论是在进行MinorGC还是FullGC,使用该参数都可以当前的内存使用情况;Ø参数如下:
Ø-XX:+PrintGCDetails
Ø-verbose:gc
Ø上面两个都可以,第一个较为详细!
8、Java运行模式
ØJava不会显式的制定运行的模式,JVM会根据内存的大小自动进行判断,主要有Server和Client两种模式。ØServer模式
Ø启动速度慢
Ø运行速度快
ØJVM在Server模式默认-Xms是128M,-Xmx是1024M
ØClient模式
Ø启动速度快
Ø运行速度没有Server模式快
ØJVM在client模式默认-Xms是1M,-Xmx是64M
相关文章推荐
- JVM之---Java内存分配参数(第四篇)
- JVM笔记4:Java内存分配策略及配置参数
- JVM笔记4:Java内存分配策略及配置参数
- 【Java JVM】Java虚拟机内存分配几个原则
- JVM参数配置 java内存区域
- java中的参数传递方式以及内存分配情况
- JVM内存分配参数
- java 内存泄露常见类型及对应相关JVM参数
- java jvm GC 各个区内存参数设置
- jvm学习笔记二(java内存分配策略和回收策略)
- 深入理解JVM、Java内存分配、管理小结
- JVM 内存分配模型概念和java中各种对象的存储
- JVM 虚拟机 (一) Java内存分配 划分与回收
- java的参数传递与内存分配问题
- java中的参数传递方式以及内存分配情况
- JAVA的JVM的内存分配
- [置顶] JVM--解析Java内存区域及数据的内存分配与线程安全之间的一些联系
- java web start使用jvm参数,设置内存使用
- Java内存区域划分、内存分配原理(深入理解JVM一)
- java的参数传递与内存分配问题