`
happy20070302
  • 浏览: 96678 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Java JVM

    博客分类:
  • j2se
阅读更多
安装Java开发软件时,默认安装包含两个文件夹,一个JDK(Java开发工具箱),一个JRE(Java运行环境,内含JVM),其中JDK内另含一个JRE。如果只是运行Java程序,则JRE已足够;而JDK则只有开发人员才用到。

一、JVM内存分配设置

1. JVM内存分配设置的参数有四个:

-Xmx    Java Heap最大值,默认值为物理内存的1/4,最佳设值应该视物理内存大小及计算机内其他内存开销而定;

-Xms    Java Heap初始值,Server端JVM最好将-Xms和-Xmx设为相同值,开发测试机JVM可以保留默认值;

-Xmn    Java Heap Young区大小,不熟悉最好保留默认值;

-Xss    每个线程的Stack大小,不熟悉最好保留默认值;

2. 如何设置JVM的内存分配:

(1)当在命令提示符下启动并使用JVM时(只对当前运行的类Test生效):

java -Xmx128m -Xms64m -Xmn32m -Xss16m Test

(2)当在集成开发环境下(如eclipse)启动并使用JVM时:

a. 在eclipse根目录下打开eclipse.ini,默认内容为(这里设置的是运行当前开发工具的JVM内存分配):

-vmargs
-Xms40m
-Xmx256m
-vmargs表示以下为虚拟机设置参数,可修改其中的参数值,也可添加-Xmn,-Xss,另外,eclipse.ini内还可以设置非堆内存,如:-XX:PermSize=56m,-XX:MaxPermSize=128m。

此处设置的参数值可以通过以下配置在开发工具的状态栏显示:

在eclipse根目录下创建文件options,文件内容为:org.eclipse.ui/perf/showHeapStatus=true

修改eclipse根目录下的eclipse.ini文件,在开头处添加如下内容:
-debug
options
-vm
javaw.exe
重新启动eclipse,就可以看到下方状态条多了JVM信息。

b. 打开eclipse-窗口-首选项-Java-已安装的JRE(对在当前开发环境中运行的java程序皆生效)

编辑当前使用的JRE,在缺省VM参数中输入:-Xmx128m -Xms64m -Xmn32m -Xss16m

c. 打开eclipse-运行-运行-Java应用程序(只对所设置的java类生效)

选定需设置内存分配的类-自变量,在VM自变量中输入:-Xmx128m -Xms64m -Xmn32m -Xss16m

注:如果在同一开发环境中同时进行了b和c设置,则b设置生效,c设置无效,如:

开发环境的设置为:-Xmx256m,而类Test的设置为:-Xmx128m -Xms64m,则运行Test时生效的设置为:

-Xmx256m -Xms64m

(3)当在服务器环境下(如Tomcat)启动并使用JVM时(对当前服务器环境下所以Java程序生效):

a. 设置环境变量:

变量名:CATALINA_OPTS

变量值:-Xmx128m -Xms64m -Xmn32m -Xss16m

b. 打开Tomcat根目录下的bin文件夹,编辑catalina.bat,将其中的%CATALINA_OPTS%(共有四处)替换为:-Xmx128m -Xms64m -Xmn32m -Xss16m

二、查看JVM内存信息

Runtime.getRuntime().maxMemory();  //最大可用内存,对应-Xmx

Runtime.getRuntime().freeMemory();  //当前JVM空闲内存

Runtime.getRuntime().totalMemory();  //当前JVM占用的内存总数,其值相当于当前JVM已使用的内存及freeMemory()的总和

关于maxMemory(),freeMemory()和totalMemory():

maxMemory()为JVM的最大可用内存,可通过-Xmx设置,默认值为物理内存的1/4,设值不能高于计算机物理内存;

totalMemory()为当前JVM占用的内存总数,其值相当于当前JVM已使用的内存及freeMemory()的总和,会随着JVM使用内存的增加而增加;

freeMemory()为当前JVM空闲内存,因为JVM只有在需要内存时才占用物理内存使用,所以freeMemory()的值一般情况下都很小,而JVM实际可用内存并不等于freeMemory(),而应该等于maxMemory()-totalMemory()+freeMemory()。
分享到:
评论

相关推荐

    下载 java JVM INSTR 反编译

    Java JVM(Java虚拟机)是Java程序运行的基础,它负责解释和执行字节码,使得Java具有跨平台的能力。INSTR在Java世界中通常不直接对应一个特定的概念,但可能是指反编译过程中的一些指令或者工具。反编译是将已编译...

    java jvm及性能优化_javajvm优化_Java性能分析_

    Java虚拟机(JVM)是Java程序运行的基础,它负责解释和执行字节码,提供了一个平台无关的运行环境。JVM性能优化是提升Java应用效率的关键环节,涉及到内存管理、垃圾回收、线程调度等多个方面。以下是对"Java JVM及...

    Java jvm虚拟机.zip

    Java JVM(Java Virtual Machine)虚拟机是Java编程语言的核心组成部分,它是Java平台的基石,使得Java程序具有跨平台的能力。JVM是一种抽象的计算机,它执行字节码,提供了运行Java程序所需的环境。理解JVM的工作...

    JAVA jvm DUMP 内存分析

    性能测试,线程的 dump 看到线程的 死锁,等待 运行状态

    tomcat6.0 修改启动内存设置 java jvm参数配置

    ### Tomcat 6.0 修改启动内存设置及 Java JVM 参数配置详解 #### 一、背景与目的 在部署和运行 Java Web 应用时,合理地配置应用服务器(如 Apache Tomcat)的内存是非常重要的。这不仅可以提升应用程序的性能,还...

    JAVA JVM内存监控工具总结

    【Java JVM内存监控工具详解】 Java JVM内存监控是优化Java应用程序性能的关键环节,而VisualVM作为一款集成多种JDK命令行工具的可视化平台,提供了强大的分析功能。它包含的工具如jps、jstat、jmap、jinfo、jstack...

    IBM Java JVM Diagnostic Guide

    ### IBM Java JVM Diagnostic Guide #### 一、关于本书 **本书概述了IBM Java虚拟机(JVM)的工作原理、调试技巧以及可用于解决JVM问题的诊断工具。** 本书旨在帮助开发人员、系统管理员和技术支持工程师更好地...

    java jvm初步了解;打卡狂神

    Java JVM 初步了解 在 Java 中,JVM(Java Virtual Machine)扮演着至关重要的角色,它是 Java 语言的 runtime 环境,负责将 Java 字节码翻译成机器代码并执行。下面是对 JVM 的初步了解。 1. JVM 的理解 JVM 是 ...

    认识 java JVM虚拟机选项 Xms Xmx PermSize MaxPermSize 区别

    Java JVM 虚拟机选项 Xms Xmx PermSize MaxPermSize 区别 Java JVM 虚拟机选项 Xms Xmx PermSize MaxPermSize 是 Java 虚拟机(JVM)中用于配置内存管理的参数。这些参数控制着 JVM 中的堆内存和非堆内存的分配。 ...

    jvm瓶颈定位 java jvm 学习

    Java虚拟机(JVM)是Java开发中的核心组成部分,它负责执行字节码,管理内存,以及优化程序性能。在Java应用的运行过程中,如果出现性能问题,JVM瓶颈定位就显得至关重要。本文将深入探讨如何理解和解决Java JVM的...

    Java JVM面试必备八股文

    Java虚拟机(JVM)是Java程序运行的核心,对于Java开发工程师来说,深入理解JVM是面试中的必备技能。这份“Java JVM面试必备八股文”涵盖了JVM的基础知识、垃圾回收(GC)机制和类加载机制等关键点,旨在帮助准备...

    java JVM 第一章 java JVM 第一章

    java JVM 第一章

    Java JVM面试题.rar

    Java虚拟机(JVM)是Java程序运行的基础,它是一个抽象的计算机系统,负责执行Java字节码。在Java开发和面试中,JVM相关的知识是必不可少的一部分。下面,我们将深入探讨Java JVM的一些核心概念和面试常问问题。 1....

    JAVA JVM文件

    JAVA JVM(Java Virtual Machine)文件是Java编程语言的核心组成部分,它是Java程序运行的基石。Java虚拟机是一种抽象的计算机,负责执行字节码,也就是编译后的Java代码。它的主要功能包括类加载、动态链接、内存...

    javajvm:用Java编写的玩具JVM

    javajvm-xxx.jar:JVM的实现,本质上是一个jar包,里面放着编译好的Java代码。 xxx代表版本号,不要在Shell中真的输入xxx,请将javajvm-xxx.jar自行换成对应的文件。 在javajvm-xxx.jar所在的目录下,命令行中执行 ...

    java jvm内存结构 调优

    java jvm内存结构 调优

    java -jvm 内存分配和jvm调优

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

    java JVM 详解

    Java JVM 详解 Java JVM 是 Java 语言的核心组件之一,负责将 Java 字节码翻译成机器语言并执行。要深入了解 JVM,可以从 Java 的特性入手,描绘 JVM 的大致应用,然后细细阐述 JVM 的原理及内存管理机制和调优。...

    java JVM 使用JavaAgent测试Object的大小

    java JVM 使用JavaAgent测试Object的大小

    java JVM专题问题整理分析

    java JVM专题问题整理分析

Global site tag (gtag.js) - Google Analytics