`

Java虚拟机JVM - 关于内存的设置与调优

阅读更多

来自: http://fengyouhua.iteye.com/blog/58170

 

JVM内存的设置的原理
  
默认的java虚拟机的大小比较小,在对大数据进行处理时java就会报错:java.lang.OutOfMemoryError。
设置jvm内存的方法,对于单独的.class,可以用下面的方法对Test运行时的jvm内存进行设置。
java -Xms64m -Xmx256m Test
-Xms是设置内存初始化的大小
-Xmx是设置最大能够使用内存的大小(最好不要超过物理内存大小)
在weblogic中,可以在startweblogic.cmd中对每个domain虚拟内存的大小进行设置,默认的设置是在commEnv.cmd里面。

 


本文引用地址:   http://cnpoint.com/framwwork/2006/1109/content_4563.htm

JVM内存的调优


1. Heap设定与垃圾回收 Java Heap分为3个区,Young,Old和Permanent。Young保存刚实例化的对象。当该区被填满时,GC会将对象移到Old区。Permanent区则负责保存反射对象,本文不讨论该区。 JVM的Heap分配可以使用-X参数设定,


-Xms
初始Heap大小
-Xmx
java heap最大值
-Xmn
young generation的heap大小


JVM有2个GC线程。第一个线程负责回收Heap的Young区。第二个线程在Heap不足时,遍历Heap,将Young 区升级为Older区。Older区的大小等于-Xmx减去-Xmn,不能将-Xms的值设的过大,因为第二个线程被迫运行会降低JVM的性能。
为什么一些程序频繁发生GC?有如下原因:
l          程序内调用了System.gc()或Runtime.gc()。
l          一些中间件软件调用自己的GC方法,此时需要设置参数禁止这些GC。
l          Java的Heap太小,一般默认的Heap值都很小。
l          频繁实例化对象,Release对象。此时尽量保存并重用对象,例如使用StringBuffer()和String()。
         如果你发现每次GC后,Heap的剩余空间会是总空间的50%,这表示你的Heap处于健康状态。许多Server端的Java程序每次GC后最好能有65%的剩余空间。 经验之谈:
1 Server JVM 最好将 -Xms -Xmx 设为相同值。为了优化 GC ,最好让 -Xmn 值约等于 -Xmx 1/3[2]
2 .一个 GUI 程序最好是每 10 20 秒间运行一次 GC ,每次在半秒之内完成 [2]
注意:
1.增加Heap的大小虽然会降低GC的频率,但也增加了每次GC的时间。并且GC运行时,所有的用户线程将暂停,也就是GC期间,Java应用程序不做任何工作。
2.Heap大小并不决定进程的内存使用量。进程的内存使用量要大于-Xmx定义的值,因为Java为其他任务分配内存,例如每个线程的Stack等。
2.Stack的设定
每个线程都有他自己的Stack。


-Xss
每个线程的 Stack 大小


Stack的大小限制着线程的数量。如果Stack过大就好导致内存溢漏。-Xss参数决定Stack大小,例如-Xss1024K。如果Stack太小,也会导致Stack溢漏。
3.硬件环境
硬件环境也影响GC的效率,例如机器的种类,内存,swap空间,和CPU的数量。
如果你的程序需要频繁创建很多transient对象,会导致JVM频繁GC。这种情况你可以增加机器的内存,来减少Swap空间的使用[2]。
4.4种GC
第一种为单线程GC,也是默认的GC。,该GC适用于单CPU机器。
第二种为Throughput GC,是多线程的GC,适用于多CPU,使用大量线程的程序。第二种GC与第一种GC相似,不同在于GC在收集Young区是多线程的,但在Old区和第一种一样,仍然采用单线程。-XX:+UseParallelGC参数启动该GC。
第三种为Concurrent Low Pause GC,类似于第一种,适用于多CPU,并要求缩短因GC造成程序停滞的时间。这种GC可以在Old区的回收同时,运行应用程序。-XX:+UseConcMarkSweepGC参数启动该GC。
第四种为Incremental Low Pause GC,适用于要求缩短因GC造成程序停滞的时间。这种GC可以在Young区回收的同时,回收一部分Old区对象。-Xincgc参数启动该GC。
4种GC的具体描述参见[3]。
 

分享到:
评论

相关推荐

    Java虚拟机实战-垃圾回收及性能调优

    Java虚拟机实战-垃圾回收及性能调优

    java虚拟机jvm及Tomcat中的jvm有关内存的设置与调优

    ### Java虚拟机(JVM)内存设置与调优详解 #### 引言 在现代软件开发中,Java虚拟机(JVM)作为执行Java字节码的核心组件,其性能直接影响到Java应用的运行效率与稳定性。特别是在大数据处理场景下,合理设置JVM内存...

    java -jvm 内存分配和jvm调优

    Java JVM(Java虚拟机)内存分配与调优是Java开发者必须掌握的重要技能,它涉及到程序的性能优化和稳定性。在Java应用中,JVM扮演着至关重要的角色,它负责解析字节码、管理内存以及执行线程等。本文将深入探讨JVM...

    深入虚拟机---JVM调优总结(摘自网上网上大牛分享).pdf

    在深入讨论JVM(Java虚拟机)调优之前,我们有必要先了解一下虚拟机的基本概念和堆栈的区分。Java程序在运行时,所有的数据都存储在JVM的内存模型中。在内存模型中,有两大重要区域,即堆(Heap)和栈(Stack)。堆主要...

    java虚拟机调优--某培训班的课件与源码

    本资源"java虚拟机调优--某培训班的课件与源码"提供了一套全面的培训材料,旨在帮助开发者深入理解和优化JVM的工作机制。 在Java开发中,JVM调优是一项至关重要的技能,它可以显著提高应用的性能,减少内存占用,...

    揭秘Java虚拟机-JVM设计原理与实现

    《揭秘Java虚拟机-JVM设计原理与实现》这本书深入探讨了Java虚拟机(JVM)的工作原理及其在Java编程中的核心地位。Java虚拟机是Java平台的核心组成部分,它负责执行字节码,为开发者提供了跨平台的运行环境。以下是...

    深入理解Java虚拟机(jvm性能调优+内存模型+虚拟机原理).zip

    《深入理解Java虚拟机》是一本深度探讨Java虚拟机(JVM)的著作,涵盖了JVM性能调优、内存模型以及虚拟机原理等多个关键领域。本文将基于这些主题,详细阐述其中的重要知识点。 首先,我们要了解Java虚拟机(JVM)...

    java虚拟机调优大师--关于JVM项目程序调优代表性的实例,eclipse优化

    实战:Eclipse运行速度调优。案例分析。高性能硬件上的程序部署策略

    java虚拟机(jvm)介绍以及相关参数设置与调优

    "java虚拟机(jvm)介绍以及相关参数设置与调优" Java虚拟机(JVM)是Java平台的核心组件之一,它提供了一个运行Java字节码的环境,并且负责管理Java程序的内存分配和垃圾回收。在本文中,我们将深入探讨Java虚拟机...

    Java虚拟机-jvm故障诊断与性能优化-源码

    在《实战Java虚拟机——JVM故障诊断与性能优化》一书中,作者深入探讨了如何对JVM进行故障排查和性能调优,通过源码分析来帮助读者理解其内部工作原理。下面我们将根据书中的主题,详细阐述相关的知识点。 1. **JVM...

    java虚拟机(JVM)调优案例分析与MyEclipse性能调优实战

    java虚拟机(JVM)调优案例分析与MyEclipse性能调优实战

    深入理解Java虚拟机JVM高级特性与最佳实践1

    《深入理解Java虚拟机JVM高级特性与最佳实践》一书,正是为解决这一需求而生。 本书的作者周志明站在前人的基础上,对JVM进行了全面而深入的解读,不仅覆盖了JVM的基础概念,而且深入探讨了JVM的高级特性,让读者...

    实战JAVA虚拟机 JVM故障诊断与性能优化.rar

    《实战JAVA虚拟机 JVM故障诊断与性能优化》是一本深度探讨Java虚拟机(JVM)的专著,旨在帮助开发者解决实际工作中遇到的JVM相关问题,提升系统的性能表现。通过对JVM内部机制的深入理解,我们可以更有效地调试、...

    实战JAVA虚拟机 JVM故障诊断与性能优化

    《实战JAVA虚拟机—JVM故障诊断与性能优化》是一本深入探讨Java虚拟机(JVM)技术的书籍,旨在帮助开发者和系统管理员诊断并优化JVM相关的性能问题。本书内容丰富,涵盖了大量的实践案例,使得即便是初学者也能理解...

    jvm-full-gc调优-jvm-full-gc.zip

    在Java开发中,JVM(Java虚拟机)的性能优化是一项关键任务,特别是对于大型系统而言,频繁的Full GC(垃圾收集)会导致应用暂停时间过长,影响用户体验。本资料"jvm-full-gc调优-jvm-full-gc.zip"显然是针对如何...

    深入理解Java虚拟机视频教程(jvm性能调优+内存模型+虚拟机原理)视频教程

    第23节Java内存区域-Java虚拟机栈00:12:04分钟 | 第24节Java内存区域-程序计数器00:12:54分钟 | 第25节Java内存区域-本地方法栈00:02:39分钟 | 第26节Java内存区域-堆内存00:05:08分钟 | 第27节Java内存区域-...

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

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

    java虚拟机的相关参数设置与调优.pdf

    ### Java虚拟机的相关参数设置与调优 #### Java虚拟机简介 Java虚拟机(Java Virtual Machine,简称JVM)是一种抽象计算机模型,在物理计算机上通过软件实现。它有自己的硬件架构,例如处理器、堆栈、寄存器等,并...

Global site tag (gtag.js) - Google Analytics