一.jdk各个版本在不同操作系统中支持的最大内存是不一样的,但是可以通过以下方法来进行测试
c:>java -Xmxxxxxm(g) -version
其中xxxx为最大内存数值, m(g)是内存的计量单位,如果命令能够正确显示出jdk的版本等信息,说明当前jdk支持测试的最大内存数量,否则说明测试的内存超出了jdk支持的最大值,
例如:
c:\\documents and settings\\fengbaoxp>java -xmx1g -version
java version \"1.6.0_03\"
java(tm) se runtime environment (build 1.6.0_03-b05)
java hotspot(tm) client vm (build 1.6.0_03-b05, mixed mode)
命令正确显示了jdk信息,说明当前jdk能够支持1g的内存。
c:\\documents and settings\\fengbaoxp>java -xmx2g -version
error occurred during initialization of vm
could not reserve enough space for object heap
could not create the java virtual machine.
-bash-3.00$ ./java -Xmx2048m -version
java version "1.6.0_04"
Java(TM) SE Runtime Environment (build 1.6.0_04-b12)
Java HotSpot(TM) Server VM (build 10.0-b19, mixed mode)
-bash-3.00$ ./java -Xmx1024m -version
java version "1.6.0_04"
Java(TM) SE Runtime Environment (build 1.6.0_04-b12)
Java HotSpot(TM) Server VM (build 10.0-b19, mixed mode)
-bash-3.00$ ./java -Xmx4096m -version
Invalid maximum heap size: -Xmx4096m
The specified size exceeds the maximum representable size.
Could not create the Java virtual machine.
命令打印出错误信息,说明当前jdk不能支持2g的内存。
本机测试:
二.jre还区分client和server两个版本
client版本加载速度较快,但是支持内存比server要少,比较适合桌面应用;
server版本加载速度较慢,但是运行比较快而且稳定,一些jre还针对server版进行优化,所以我们运行服务端程序最好使用server版。
说明当前jre为client版
说明当前jre为server版
jdk一般默认为client版,要想修改为server版,需要修改 [jre安装目录]/lib/i386/jvm.cfg文件
将:
-client known
-server known
调整顺序改为:
-server known
-client known
如下所示:
相关推荐
这是因为分配给JVM的堆内存太小,不足以支持当前应用的需求。可以通过增加`-Xmx`参数来设置最大堆内存大小。 #### 四、内存泄漏识别与定位 1. **工具选择**:可以使用如VisualVM、JProfiler等工具来监控和诊断内存...
Java栈用于存储局部变量和方法调用的状态,每个线程都有自己的Java栈,支持线程的独立执行。 - **2.5.2 堆** 堆是JVM所管理的最大的一块内存区域,所有对象实例和数组都要在堆上分配。堆空间被所有线程共享,因此...
- **堆**:所有对象实例以及数组都在这里分配内存,是JVM中最大的一块内存区域,支持垃圾回收。 - **栈**:每个线程都有一个独立的栈,用于存储方法调用的帧,包含局部变量表、操作数栈、动态链接和方法返回地址。...
在Java 2平台的强大支持下,J2SE能够自动管理内存,这大大减轻了开发者的负担,让他们不必再进行复杂的显式内存管理工作。本文档旨在对Sun J2SE 5.0版本中的Java HotSpot虚拟机(JVM)内存管理机制进行全面概述,包括...
### Java内存监控工具Java VisualVM #### 一、概述 Java VisualVM是一款强大的Java应用程序性能分析和诊断工具,主要用于监控和分析Java应用的运行时行为,包括但不限于内存使用情况、线程状态、CPU使用率等关键...
2. **Dominator Tree**:这个视图显示了对象之间的支配关系,帮助我们找出占用内存最大的对象。 3. **Top Consumers**:列出占用内存最多的对象和类,便于我们定位问题。 4. **OQL (Object Query Language)**:MAT...
Java对多线程的支持使得开发者能够更方便地开发出并行程序。然而,直接使用Java线程API进行并行编程虽然直观,但在实际应用中往往难以管理和优化线程间的同步问题。为了解决这些问题,一些工具和技术被引入到Java中...
- `-Xmx` 和 `-Xms` 参数用于设置Java虚拟机(JVM)的最大堆内存(Maximum Heap Size)和初始堆内存(Initial Heap Size),确保应用启动时就能获得足够的内存空间。通常,为了减少因内存动态调整带来的性能影响,...
可以通过增加`-Xms`和`-Xmx`参数来设置初始和最大堆内存,但这种方法只是治标不治本,对于大规模数据导出,更推荐使用上述流式处理方案。 5. **延迟计算和写入**: - 只在需要时才计算和写入数据,而不是预先计算...
1. **堆内存**:这是Java应用中最大的内存区域,用于存储对象实例。当堆空间不足时,会触发Full GC(垃圾收集),如果仍然无法释放足够的空间,就会出现`OutOfMemoryError: Java heap space`错误。 2. **年轻代...
Java程序员可以通过调整JVM的内存参数,如-Xms、-Xmx来设置堆内存的初始大小和最大大小,-XX:NewRatio来调整新生代和老年代的比例,以及-XX:SurvivorRatio来调整Eden和Survivor区的比例。此外,选择合适的垃圾收集器...
堆是Java虚拟机所管理的内存中最大的一块,主要用于存放所有由`new`关键字创建的对象实例。它被所有线程共享,并且它的生命周期与Java虚拟机相同。 ##### 堆的分类 堆可以分为两个主要区域:年轻代(Young ...
在Java编程中,获取系统资源的信息是常见...总的来说,Java虽然不能直接提供获取所有系统资源的通用方法,但通过标准库和其他辅助工具,我们可以获取到CPU、内存和硬盘等关键信息,为系统监控和性能优化提供数据支持。
5. 本地方法栈(Native Method Stack):支持Java虚拟机调用本地(C/C++)方法,为每个线程提供服务。 了解这些内存区域后,我们来谈谈JVM内存调优。调优主要包括以下几个方面: 1. 设置合理的堆大小:过大可能...
### Java内存管理与垃圾回收机制详解 #### 一、引言 Java作为一种广泛使用的编程语言,其内存管理和垃圾回收机制是开发人员必须了解的核心概念之一。本文将详细探讨JVM的垃圾回收机制及其调优方法,深入分析Java...
- **Java堆**:所有对象实例和数组都在这里分配内存,是JVM最大的一块内存区域,也是GC的主要区域。 - **方法区**(在Java 8中被元空间替换):存储已加载的类信息、常量、静态变量等,也称为永久代。 - **运行时...
Java堆是Java虚拟机所管理的内存中最大的一块,它是所有线程共享的一块内存区域,在虚拟机启动时创建。此内存区域的唯一目的就是存放对象实例,几乎所有的对象实例都在这里分配内存。堆中的内存还可以细分为新生代和...
Java堆是JVM所管理的内存中最大的一块,它也是被所有线程共享的一块内存区域。堆内存用于存放几乎所有的对象实例,是垃圾收集器主要管理的区域。Java堆可以处于物理上不连续的内存空间中,只要逻辑上是连续的即可。...
### Java内存简要 #### 第一讲:Java基本概念 - **JDK**: Java Development Kit,Java开发工具包,包含了Java运行环境(JRE)、Java工具(如编译器`javac`、解释器`java`等)以及Java的基础类库(即Java API,包括...