`
xiaoZ5919
  • 浏览: 404766 次
  • 性别: Icon_minigender_1
  • 来自: 安平人@北京
博客专栏
Group-logo
Netty学习笔记
浏览量:73198
社区版块
存档分类
最新评论

关于分配jvm heap内存堆大小的问题

阅读更多

   在解决jvm超出堆内存大小的java.lang.OutOfMemoryError: Java heap space错误时,我从网上搜的解决解决方案,借助jconsole成功解决。我按照网友的方案将heap堆内存(最小)分配为512m。在使用jconsole监控整个流程发现: 在很长一段时间jvm占用内存在300m左右。我没有修改的时候,分配的内存也就6M左右,占用内存经常徘徊在4.8M左右,程序也能正常运行。经过我分析,应该和jvm的gc回收机制有关吧。当jvm使用内存达到分配内存的一个百分比之后,进行垃圾回收。由此可见,并不是给jvm分配的heap堆内存越大越好。

分享到:
评论
7 楼 heavener 2009-03-12  
大家在做优化tomcat的时候一般都用什么方法?能不能收集一下形成一个规范?
请问一下如果程序中用递归是不是很容易造成java heap space
6 楼 nanzhou 2009-03-12  
去过的,去的刚果。

切·格瓦拉死在玻利维亚
5 楼 murainwood 2009-03-12  
sdh5724 写道
古巴的伟大战士, 后来死在非州的某小国的革命?

似乎他没去过非洲
4 楼 liujunsong 2009-03-11  
Java的GC收集,一直是程序设计的一大弊端.
从源头上来说,Java有一个理念,万事万物皆对象.于是在Java里面,几乎所有的东西都用对象来表示,尤其是字符串也用对象来表示,而且是用不可修改的字符串来表示.于是每次字符串的修改,都会引起内存的再分配过程.
Java里面的垃圾多,根本原因是没必要的对象太多.这些对象一会儿活过来,一会儿又死过去,最后应用程序就不断在创造垃圾,然后回收这些垃圾.
要解决这个问题,有一个很简单的方案.
其一,减少类的数量,别搞那么多空架子的类出来,尤其是接口和抽象类.
其二.把访问比较少的类,直接定义成static的,这样只会生成一个实例,既不需要创建,也不需要收集,内存的使用就稳定了.

从根本上来说,内存的混乱是一个程序的架构问题,而不仅仅是应用服务器参数调整的问题.
3 楼 zhouzhao21 2009-03-11  
heap堆内存大至少可以减少 gc 的次数。
2 楼 sdh5724 2009-03-02  
古巴的伟大战士, 后来死在非州的某小国的革命?
1 楼 ilovelpz 2009-03-02  
LZ你头像是谁啊

相关推荐

    JVM内存溢出问题解析

    堆的优势是可以动态分配内存大小,生存期也不必事先告诉编译器,但缺点是要在运行时动态分配内存,存取速度较慢。 JVM 如何设置虚拟内存?在 JVM 中,如果 98%的时间是用于 GC 且可用的 Heap size 不足 2%的时候...

    java获得jvm内存大小

    本文将深入探讨如何在Java中获取JVM内存大小,包括堆内存的总量、最大值以及剩余空间,并解析给定代码片段中的关键概念。 ### JVM内存模型 在讨论如何获取JVM内存大小之前,首先需要理解JVM的内存布局。JVM内存...

    jvm 内存分析文档

    这部分在JVM规范中被称为“非堆”(Non-Heap),在Java 8及以后版本,这部分被合并到堆内存中,称为元空间(Metaspace)。 - **本地方法栈(Native Method Stack)**:与JVM栈类似,但服务于本地方法(如C++方法)...

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

    2. **-Xmx**:设定JVM最大堆内存大小,不应超过物理内存的限制,以防内存溢出。 3. **-Xmn**:设置年轻代内存大小,通常不需要手动设置,JVM会根据实际情况自动调整。 4. **-Xss**:设定每个线程的栈大小,对于...

    JVM内存参数详解以及配置调优

    在这个资源中,我们将详细讨论 JVM 内存参数的配置和调优,包括 JVM 的结构、内存管理、垃圾回收、堆和非堆内存、内存分配和限制等方面。 JVM 结构 JVM 的结构主要由六个部分组成:JVM API、JVM 内部组件、平台...

    java -jvm 内存分配和jvm调优

    1. 堆(Heap):这是Java对象的主要存储区域,所有通过new创建的对象都在堆上分配内存。堆被所有线程共享,分为新生代(Young Generation)和老年代(Old Generation)。新生代又细分为Eden区、From Survivor区和To ...

    java中jvm内存分配相关资料总结整理

    - **JVM参数设置**:通过设置-Xms, -Xmx控制堆内存大小,-Xss设置栈内存大小,-XX:NewRatio调整新生代与老年代比例等。 - **监控与诊断**:使用JVisualVM、JConsole等工具监控JVM状态,找出内存泄漏和性能瓶颈。 ...

    mat(mac)---jvm内存分析工具

    MAT通过深入分析堆转储(heap dump)文件,提供了丰富的视图和功能,使内存管理变得更加直观和高效。 1. **内存泄漏检测**: 内存泄漏是导致Java应用性能下降和系统资源耗尽的主要原因之一。MAT通过分析堆转储文件...

    JVM-内存管理 2012-12.pdf

    首先,JVM内存管理涉及的内存空间主要分为方法区(Method Area)、堆(Heap)、本地方法栈(Native Method Stacks)、程序计数器(Program Counter)和JVM方法栈(JVM Stack)。其中,方法区和堆是由所有线程共享的...

    解决Java_heap_space问题

    2. **最大堆大小限制**:如果应用程序的内存需求超过JVM的最大堆大小设置,也会导致heap space问题。 3. **内存泄漏**:程序中存在未被及时回收的不再使用的对象,长期占用内存资源,最终导致可用堆内存耗尽。 ####...

    JVM内存模型深度剖析与优化.pdf

    JVM内存优化的目的是尽可能让对象都在新生代里分配和回收,避免频繁对老年代进行垃圾回收。以下是一些JVM内存优化的技巧: 1. 设置适当的堆大小:根据实际项目情况,设置适当的堆大小可以避免频繁的垃圾回收。 2. ...

    JVM GC原理, heapsize调优

    堆内存大小调整涉及到年轻代和老年代的大小比例分配,以及整个堆的初始大小和最大大小设置。调整堆大小通常是为了避免内存溢出或者减少GC的频率和时间。合理地配置堆内存可以提升应用的吞吐量或者减少GC造成的停顿...

    解析JVM内存结构和6大区域

    JVM 的内存结构可以分为 6 个区域:PC 寄存器、JVM 栈、堆(Heap)、方法区、运行时常量池和直接内存。每个区域都有其特定的功能和作用,以下是对每个区域的详细介绍: PC 寄存器(PC Register) PC 寄存器是一块...

    关于(java heap space)内存溢出的解决办法

    在Java编程中,"java heap space"内存溢出是一个常见的问题,它通常发生在应用程序尝试分配超过JVM堆内存限制的对象时。这个问题对于任何Java开发者来说都至关重要,因为如果不妥善处理,可能会导致程序崩溃。以下是...

    JVM 内存结构及配置总结

    - **堆(Heap)**:这是JVM中最大的一块内存,用于存储对象实例和数组。堆被划分为新生代(Young Generation)和老年代(Old Generation)两个部分,进一步细分为Eden空间、Survivor空间(From和To)。 - **运行...

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

    JVM 中的内存管理机制可以分为两部分:堆(Heap)和非堆(Non-heap)内存。堆是 JVM 中用于存放类实例和数组的内存区域,而非堆是 JVM 中用于存放方法区、JVM 内部处理或优化所需的内存的区域。 堆内存分配可以通过...

    JVM内存设置与调优指南

    - `-Xms` 和 `-Xmx`:分别设定堆的初始大小和最大大小,确保应用有足够的内存空间进行对象分配。 - `-NewRatio`:设定年轻代与老年代的比例,通常新对象多的系统可适当提高年轻代比例。 - `-SurvivorRatio`:设定...

    MemoryAnalyzer JVM堆内存分析工具

    MemoryAnalyzer(MAT)是一款强大的JVM堆内存分析工具,由IBM开发并开源,它提供了详尽的内存分析报告,帮助开发者定位内存问题,提升程序效率。本文将详细介绍MemoryAnalyzer的主要功能、使用方法以及其在实际开发...

    JVM堆内存分析工具,OOM排查工具。包括ha和mat两种

    "JVM堆内存分析工具"如HA(HeapAnalyzer)和MAT(Memory Analyzer Tool)就是专门为此设计的,它们能够帮助开发者深入洞察内存的分配、使用以及可能存在的内存泄漏问题。 首先,HA(HeapAnalyzer)通常是一个简单的...

    Tomcat JVM内存设置方法

    - 其中,`-Xms`表示初始堆内存大小,`-Xmx`表示最大堆内存大小,`-XX:PermSize`表示永久代初始大小,`-XX:MaxPermSize`表示永久代最大大小,`-XX:MaxNewSize`表示新生代最大大小,`-Djava.awt.headless=true`则表示...

Global site tag (gtag.js) - Google Analytics