`

一次JVM调优实验(java分布式应用札记)

阅读更多
package com.google.prophet.quickstart.jvm;

import java.io.IOException;
import java.util.ArrayList;


public class JVMTunning {

	/**
	 * JVM参数 -Xms130m -Xmx130m -Xmn20m -XX:PermSize=20m -XX:MaxPermSize=20m
	 * -XX:+UseSerialGC OC 110M NC 20M ED :S0 : S1=16:2:2
	 * 
	 * @param args
	 * @throws InterruptedException
	 */

	public static void main(String[] args) throws Exception {

		System.out.println("Test Start-----");
		Thread.sleep(10000);
		System.out.println("JStat0---Initial--");

		ArrayList tempObjs = new ArrayList<GCDataObject>();

		// 创建100M的内存占用,NC上不够用,肯定要触发MinorGC,促使其放在OC
		for (int i = 0; i < 51200; i++) {
			GCDataObject gcDataObject = new GCDataObject(2);
			tempObjs.add(gcDataObject);
		}
		System.out.println("JStat1---Create 100M Objects--");
		Thread.sleep(10000);

		System.out.println("Full GC will Start-----");
		// 促使FullGC使得OC上空间被占用100M,剩余10M
		System.gc();
		tempObjs.size();
		System.out.println(tempObjs.size());
		tempObjs = null;

		System.out.println("JStat2---FullGC后--");
		Thread.sleep(10000);

		// 创建大约16M的对象,NC上放不下,只能放入OC,OC再放不下只能FullGC
		ArrayList tempObj1s = new ArrayList<GCDataObject>();
		for (int i = 0; i < 3200; i++) {
			GCDataObject gcDataObject = new GCDataObject(5);
			tempObj1s.add(gcDataObject);
		}
		System.out.println(tempObj1s.size());
		// 诱发FullGC
		tempObj1s = null;
		
		System.out.println("JStat3---Create 16M Objects--");
		Runtime.getRuntime().exec("jstat -gc");
		Thread.sleep(10000);
		Thread.sleep(1000000000);
	}
}

class GCDataObject {
	RefDataObject refDataObj = null;
	byte[] gcByte = null;

	public GCDataObject(int i) {
		gcByte = new byte[1024 * i];
		refDataObj = new RefDataObject();
	}

}

class RefDataObject {
	ChildDataObject childDataObject = null;

	public RefDataObject() {
		childDataObject = new ChildDataObject();
	}

}

class ChildDataObject {
	Object object = null;

	public ChildDataObject() {
		object = new Object();
	}
}
 


 

MinorGC是针对新生代中的EC区域的。

 

如果EC过大,那么MinorGC频度减少,好处是大部分对象可能就在E0区域销毁了,但是如果新堆大那么OC就有可能过小本来应该可以放在OC上的但是由于OC空间太小,导致FullGC,现在不得不在FullGC进行回收,有可能导致FullGC过多

 

 

如果EC过小 MinorGC会频繁进行,但是频率太快就会导致回收不到应该回收的对象,对象被放入OC中,OC不够用,则触发FullGC进行。

 

原则就是能马上回收的就马上回收尽量避免进入下一代,从而增大FullGC的概率。

 

如果SurvivorRatio调小,会避免直接进入OC

 

 

 

 

 

 

  • 大小: 15 KB
分享到:
评论

相关推荐

    推荐一些JVM原理,JVM调优,JVM内存模型,JAVA并发 电子书1

    Java的发展历程始于1995年,伴随着众多技术的引入和版本的更新,包括AWT、JDBC、JavaBeans、JDK1.1、J2SE、泛型、NIO、JMX等,每一次技术的更新都对JVM和Java程序的执行效率和功能产生了重大影响。OpenJDK的出现使得...

    jvm调优的实际应用

    本文将围绕"JVM调优的实际应用"这一主题,深入探讨JVM的工作原理,讲解调优的重要性,并分享一些实用的调优工具和方法。 首先,了解JVM的工作原理是调优的基础。JVM主要分为以下几个区域:堆内存(Heap)、栈内存...

    JVM调优总结

    1.2 JVM调优总结(一)-- 一些概念 4 1.3 JVM调优总结(二)-一些概念 7 1.4 JVM调优总结(三)-基本垃圾回收算法 9 1.5 JVM调优总结(四)-垃圾回收面临的问题 12 1.6 JVM调优总结(五)-分代垃圾回收详述1 14 1.7 ...

    JVM调优实践 ⼀、JVM调优准备⼯作 实验报告 pdf

    Java虚拟机(JVM)是Java程序运行的基础,它的调优是提高应用程序性能的关键环节。在JVM调优实践中,了解各个运行时数据区的工作原理至关重要。以下是对这些区域的详细解析: 1. **虚拟机栈**:每个线程都有一个...

    马老师jvm调优实战笔记

    JVM 调优是 Java 开发者们不可或缺的技能,它直接影响着 Java 应用程序的性能和稳定性。本笔记是马老师的 JVM 调优实战笔记,涵盖了 JVM 的概述、内存结构、堆内存、垃圾回收算法、JVM 参数等方面的内容。 JVM 调优...

    JVM调优.pdf

    JVM调优是指通过调整JVM的各种参数来优化Java应用程序的运行效率,减少资源消耗,提升用户体验。本文将详细介绍JVM调优的相关知识,包括调优参数、调优方法及调优手段等。 #### 二、JVM数据类型与存储机制 在深入...

    jvm调优,java 虚拟机优化

    Java虚拟机(JVM)调优是提升Java应用程序性能的关键环节,主要涉及到内存管理、垃圾收集(GC)、线程调度等多个方面。JVM调优的目标是优化程序运行效率,减少不必要的系统资源消耗,特别是减少全GC(Full GC)的...

    JVM调优工具命令详解.pdf

    在现代的软件开发与运行环境中,Java虚拟机(JVM)的性能调优是非常重要的一环,特别是在处理大型应用程序或者服务时,合适的JVM调优能够显著提升系统性能和稳定性。本篇文档详细介绍了JVM调优工具的命令使用及其...

    java6 JVM 调优参数大全

    java6 JVM 调优参数大全 -XX

    马士兵jvm调优笔记.docx

    为了更好地控制Java虚拟机的行为,可以设置一系列JVM参数来优化性能。这些参数可以分为几类: - **标准参数**:所有JVM实现都支持的标准配置选项。 - **非标参数(-X)**:某些特定JVM实现提供的扩展配置选项。 - *...

    java高级篇:JVM调优.mp4

    分析常见的JVM调优技术及其相关条件,以及在实战中怎么使用到相关的技术进行调优,比较适合中高级开发进行学习,适合对JVM理解较深的开发学习

    monkey老师的jvm 调优

    在Java开发领域,JVM(Java Virtual Machine)是每一个程序员都需要深入了解的关键组成部分。Monkey老师的JVM调优课程,无疑为我们提供了一个宝贵的平台,来深入探究JVM的工作原理及其优化技巧。下面,我们就一起来...

    JVM调优总结PDF,带原理图

    对于Java应用程序来说,Java虚拟机(JVM)的性能直接影响着应用的整体表现。垃圾回收(GC)作为JVM的重要组成部分,其效率直接影响到程序的响应时间和资源利用率。本文旨在通过对JVM调优的基础概念和常见的垃圾回收算法...

    jvm调优_java虚拟机_JAVA虚拟机_

    JVM调优是优化Java应用程序性能的重要环节,通过对JVM参数的调整,可以有效地提升程序运行效率,减少内存消耗,提高响应速度。 深入理解JVM涉及到以下几个核心领域: 1. **内存管理**:JVM内存分为堆内存、栈内存...

    JVM调优总结 -Xms -Xmx -Xmn -Xss

    JVM 调优是 Java virtual machine 的性能优化,通过调整 JVM 的参数来提高 Java 应用程序的性能。其中,-Xms、-Xmx、-Xmn、-Xss 是四个重要的参数,分别控制 JVM 的初始堆大小、最大堆大小、年轻代大小和每个线程的...

    JVM调优总结1-12.docx

    JVM调优总结 ...JVM 调优是 Java 应用程序性能优化的重要组件之一。通过了解 JVM 调优的基本概念、垃圾回收算法、分代垃圾回收、典型配置举例、调优方法等,可以更好地优化 Java 应用程序的性能。

    Java 分布式应用程序设计代码

    Java分布式应用程序设计是一种构建大型、可扩展且高可用性系统的方法。在Java中,通过利用网络中的多台计算机,可以创建能够跨越多个节点共享资源、处理任务和存储数据的复杂应用。这种技术允许应用程序的不同部分在...

    jvm调优实战经验

    在Java开发中,JVM(Java Virtual Machine)的调优是提高应用程序性能的关键环节。JVM调优涉及到对内存管理、垃圾回收机制以及相关参数的调整,以优化应用程序的运行效率和稳定性。本文将深入探讨JVM内存结构及其与...

Global site tag (gtag.js) - Google Analytics