Some of the default values for Sun JVMs are listed below JDK _ Initial Size Maximum Size Client JVM MB MB Server JVM MB MB JDK _ Initial Size Maximum Size Client JVM MB MB Server JVM MB MB JDK Initial Size Maximum Size Client JVM MB MB Server JVM MB MB JDK Initial Size Maximum Size Client JVM MB MB Server JVM MB MB 以下是sun公司的性能优化白皮书中提到的几个例子 对于吞吐量的调优机器配置G的内存个线程并发能力 java Xmxm Xmsm Xmng Xssk XX:+UseParallelGC XX:ParallelGCThreads= Xmxm Xmsm 配置了最大Java Heap来充分利用系统内存 Xmng 创建足够大的青年代(可以并行被回收)充分利用系统内存防止将短期对象复制到老年代 Xss 减少默认最大的线程栈大小提供更多的处理虚拟内存地址空间被进程使用 XX:+UseParallelGC 采用并行垃圾收集器对年青代的内存进行收集提高效率 XX:ParallelGCThreads= 减少垃圾收集线程默认是和服务器可支持的线程最大并发数相同往往不需要配置到最大值 尝试采用对老年代并行收集 java Xmxm Xmsm Xmng Xssk XX:+UseParallelGC XX:ParallelGCThreads= XX:+UseParallelOldGC Xmxm Xmsm 内存分配被减小因为ParallelOldGC会增加对于Native Heap的需求因此需要减小Java Heap来满足需求 XX:+UseParallelOldGC 采用对于老年代并发收集的策略可以提高收集效率 提高吞吐量减少应用停顿时间 java Xmxm Xmsm Xmng Xssk XX:ParallelGCThreads= XX:+UseConcMarkSweepGC XX:+UseParNewGC XX:SurvivorRatio= XX:TargetSurvivorRatio= XX:MaxTenuringThreshold= XX:+UseConcMarkSweepGC XX:+UseParNewGC 选择了并发标记交换收集器它可以并发执行收集操作降低应用停止时间同时它也是并行处理模式可以有效地利用多处理器的系统的多进程处理 XX:SurvivorRatio= XX:MaxTenuringThreshold= 表示在青年代中Eden和Survivor比例设置增加了Survivor的大小越大的survivor空间可以允许短期对象尽量在年青代消亡 XX:TargetSurvivorRatio= 允许%的空间被占用超过默认的%提高对于survivor的使用率 JAVA的JVM的内存可分为个区(常用的一共有个)堆(heap)栈(stack)和方法区(method) 堆区 存储的全部是对象每个对象都包含一个与之对应的class的信息(class的目的是得到操作指令) jvm只有一个堆区(heap)被所有线程共享堆中不存放基本类型和对象引用只存放数据 栈区 每个线程包含一个栈区栈中只保存原始类型数据和对象和对象引用(不是对象)对象都存放在堆区中 每个栈中的数据(原始类型和对象引用)都是私有的其他栈不能访问 栈分为个部分基本类型变量区执行环境上下文操作指令区(存放操作指令) 方法区 又叫静态区跟堆一样被所有的线程共享方法区包含所有的class和static变量 方法区中包含的都是在整个程序中永远唯一的元素如classstatic变量 |