JVM 常见参数配置
-XX:+PrintGC 每次触发GC的时候打印相关日志
-XX:+PrintGCDetails 每次触发GC的时候更详细的相关日志
-XX:+UseSerialGC 串行回收
-Xms 堆初始值(要设置成和-Xmx一样大,否则会频繁的GC)
-Xmx 堆最大可用值
-Xmn 新生代堆最大可用值
-XX:SurvivorRatio (存活区比例)指的是新生代中eden : form/to 区的比例(from space 和 to space 一样大)默认 eden 要大一点,因为要新创建的对象都要先放在eden 区,默认是大致8:1:1 ,如果项目很大的情况,新生代对象比较多,也有设置2:1:1,根据实际情况
-XX:NewRatio(新生代:老年代) 一般默认配比为1:2
-XX:+HeapDumpOnOutOfMemoryError 打印堆溢出报错信息
2、-XX:MaxPermSize:表示对非堆区分配的内存的最大上限。
用例:
public class App {
public static void main(String[] args) { // java虚拟机(这个进程)能构从操作系统那里挖到的最大的内存
System.out.println("java虚拟机(这个进程)能构从操作系统那里挖到的最大的内存" + Runtime.getRuntime().maxMemory() / 1024 / 1024 + "M");
// java虚拟机挖过来而又没有用上的内存
System.out.println("java虚拟机挖过来而又没有用上的内存" + Runtime.getRuntime().freeMemory() / 1024 / 1024 + "M");
// java虚拟机现在已经从操作系统那里挖过来的内存大小,也就是java虚拟机这个进程当时所占用的所有 内存
System.out.println("java虚拟机现在已经从操作系统那里挖过来的内存大小,也就是java虚拟机这个进程当时所占用的所有 内存"
+ Runtime.getRuntime().totalMemory() / 1024 / 1024 + "M"); }
}
java虚拟机(这个进程)能构从操作系统那里挖到的最大的内存7257M
java虚拟机挖过来而又没有用上的内存485M
java虚拟机现在已经从操作系统那里挖过来的内存大小,也就是java虚拟机这个进程当时所占用的所有 内存491M
JVM 配置:-Xmx20m -Xms5m 堆最大可用值是20M,堆初始值为5M
java虚拟机(这个进程)能构从操作系统那里挖到的最大的内存18M
java虚拟机挖过来而又没有用上的内存4M
java虚拟机现在已经从操作系统那里挖过来的内存大小,也就是java虚拟机这个进程当时所占用的所有 内存5M //堆可用初始化值为5M
当我向堆内存里面申请一个Byte b[] = new Byte[3 * 1024 * 1024] 的数组时候:
java虚拟机(这个进程)能构从操作系统那里挖到的最大的内存18M
java虚拟机挖过来而又没有用上的内存2M
java虚拟机现在已经从操作系统那里挖过来的内存大小,也就是java虚拟机这个进程当时所占用的所有 内存15M // 肯定要大于5 + 3
JVM配置新生代比例参数:-Xms20m -Xmx20m -Xmn1m -XX:SurvivorRatio=2 -XX:+PrintGCDetails -XX:+UseSerialGC
[GC (Allocation Failure) [DefNew: 505K->255K(768K), 0.0013863 secs] 505K->430K(20224K), 0.0014558 secs] [Times: user=0.00 sys=0.00, real=0.00 secs]
java虚拟机(这个进程)能构从操作系统那里挖到的最大的内存19M // -Xmx20m 堆最大可用值
java虚拟机挖过来而又没有用上的内存19M
java虚拟机现在已经从操作系统那里挖过来的内存大小,也就是java虚拟机这个进程当时所占用的所有 内存19M //-Xms20m 堆可用的初始值
Heap
def new generation total 768K, used 514K [0x00000000fec00000, 0x00000000fed00000, 0x00000000fed00000) //Xmn1m 新生代堆可用
eden space 512K, 50% used [0x00000000fec00000, 0x00000000fec40bd0, 0x00000000fec80000) //-XX:SurvivorRatio=2 eden:form:to = 2:1:1
from space 256K, 99% used [0x00000000fecc0000, 0x00000000fecffff8, 0x00000000fed00000)
to space 256K, 0% used [0x00000000fec80000, 0x00000000fec80000, 0x00000000fecc0000)
tenured generation total 19456K, used 174K [0x00000000fed00000, 0x0000000100000000, 0x0000000100000000)
the space 19456K, 0% used [0x00000000fed00000, 0x00000000fed2b9d0, 0x00000000fed2ba00, 0x0000000100000000)
Metaspace used 2577K, capacity 4486K, committed 4864K, reserved 1056768K
class space used 282K, capacity 386K, committed 512K, reserved 1048576K
-XX:NewRatio=2 新生代内存:老年代 = 1 : 2
最新文章
- SQL Server 2012 联机丛书离线安装
- 国内银行CNAPS CODE 查询 苹果开发者,应用内购,需要填写税务相关信息必须的
- python练习程序(c100经典例6)
- C# html互转mht
- 一个鼠标键盘控制两台甚至多台主机的方法--Synergy
- 解决未能从程序集xxx中加载类型System.ServiceModel.Activation.HttpModule的问题
- linux调度器 信息解读
- [O] SQLite数据库报错:no such column
- pager-taglib使用示范
- Visual Studio 2008项目中WinForm窗口图标显示为类图标,仅仅能打开代码而无法打开视图问题解决
- c++ 14
- WPF 设置WebBrowser控件不弹脚本错误提示框
- 【学习笔记】锋利的jQuery(四)AJAX
- Exploit-Exercises nebule 旅行日志(一)
- Python之find命令中的位置的算法
- GDT临时分段
- SpringDataSolr 过滤(或者叫筛选)查询
- 【bzoj1507】 JSOI2008—Blue Mary的旅行
- 【转载】Mysql load data infile用法(万级数据导入,在几秒之内)
- 计数SQL,查找单据总量和按季度查找单据总量