转自:
http://blog.csdn.net/zhoutao198712/article/details/7783070
permanent的初始值和最大值(-XX:PermSize和-XX:MaxPermSize)应该permanent代活动对象大小的1.2到1.5倍。在上图中看到在FullGC之后permanent代占用空间是32390K,差不多32M。因此,permanent代的推荐大小是38M到48M,即可以设置为-XX:PermSize=48m -XX:MaxPermSize=48m(1.5倍)。这个例子里面,permanent代的空间大小是65536K即64M,大出了17M,不过在1G内存的系统的中,这个数值完全可以忍受。
另外一个常规是,young代空间应该是old代活动对象大小的1到1.5倍。那么在这里例子中,young代的大小可以设置为295M到442M。本例里面,young代的空间大小的358400K,差不多358M,在推荐值中间。
如果推荐的Java堆的初始值和最大值是活动对象大小3到4倍,而young代的推荐只是1到1.5倍,那么old代空间大小应该是2到3倍。
分享到:
相关推荐
优化Java堆内存大小对于提升应用性能、防止垃圾收集器频繁启动以及避免OutOfMemoryError至关重要。以下是五个关键技巧,可以帮助你有效地调整Java堆内存设置: 1. **理解默认值与自定义配置**:每个JVM都有默认的堆...
### 优化Java堆大小的五个技巧详解 #### 一、JVM:理解基本原理与内存管理 ##### **1.1 JVM内存模型** JVM内存管理是Java开发人员必须掌握的基本概念之一,它不仅关系到应用的性能,还直接影响到系统的稳定性和...
根据提供的文件内容,该文件主要讨论了在Java多线程环境下如何减少内存占用量。文件内容并不完整,且存在 OCR 扫描错误,但我会尝试从中提取与Java多线程和内存管理相关的知识点,并加以详细解释。 ### Java多线程...
本文将深入探讨如何统计缓存(尤其是Java对象)所占的内存大小,以及这对理解程序内存消耗的重要性。 首先,我们要知道Java对象的内存开销主要由三部分组成:对象头、实例数据和对齐填充。对象头包含对象的类型信息...
Java编程语言将内存划分为两种主要区域:栈内存(Stack Memory)和堆内存(Heap Memory),这两种内存区域各自承担不同的职责,对程序的运行起到关键作用。 栈内存主要用于存储基本类型变量(如int、char)和对象的...
在Java中,由于垃圾回收机制的存在,直接获取对象的内存占用并不像C++等语言那样简单。通常,我们可以使用一些工具或API来帮助我们。例如,`sun.misc.Unsafe`类(虽然非标准,但广泛使用)提供了访问内存的能力,...
【标题】:深入理解Java内存使用与优化:从代码到Java堆 【描述】:本文旨在帮助Java开发者深入了解从编写代码到Java堆的内存管理过程,以便更好地优化应用程序的内存使用。通过分析Java代码中的内存开销,以及讨论...
工具如`VisualVM`和`JProfiler`提供图形界面,可以直接查看对象的内存占用情况,包括对象的总大小、实例字段的大小等。 在缓存实现中,考虑对象内存大小至关重要,因为缓存的容量有限,需要有效地利用空间。根据...
在本文档中,我们主要研究了Java中对象和数据结构的内存占用情况。Java语言因为其跨平台特性,在内存使用上有一套自己的规则。特别地,Java虚拟机(JVM)管理内存的方式使得开发者需要了解一些基本的内存占用知识,...
首先,我们需要理解Java对象内存占用的基本原理。每个Java对象都由三部分组成:对象头(Object Header)、实例数据(Instance Data)和对齐填充(Padding)。对象头包含对象引用和类型信息,实例数据是对象实际存储...
这个“Java内存使用系列一Java对象的内存占用”主题旨在深入探讨Java对象在内存中的表现,以及如何有效地管理这些资源。Java开发人员需要理解内存分配、垃圾回收机制以及如何避免内存泄漏,以确保程序的高效运行。 ...
- **垃圾回收**:Java虚拟机(JVM)会自动管理堆内存,通过垃圾回收机制(Garbage Collection, GC)来回收不再被引用的对象所占用的空间。 #### 四、内存分配策略 Java的内存分配策略主要包括静态分配、栈式分配和...
使用 jmap 命令可以查看 Java 进程的内存占用情况,包括堆的配置、垃圾回收器的选择、堆的使用情况等。从 jmap 的输出结果可以看到,Java 进程的堆的最大大小是 4096MB,新生代的大小是 1.25MB,永久代的大小是 82.0...
本文将深入探讨Java中的对象内存占用,以及如何使用"java-sizeof-0.0.4"工具来查看Java对象在内存中的大小。 在Java中,内存主要分为堆内存(Heap)和栈内存(Stack)。对象通常存储在堆内存中,而基本类型的变量和...
\[ \text{字符串内存占用} = \text{String类头大小} + \text{字符数组占用空间} \] 其中,String类头大小固定为24字节。而字符数组占用空间的计算则稍微复杂一些。根据字符串长度的不同,其占用空间有所不同。具体...
为了最小化JVM的内存占用,开发者需要谨慎地配置JVM参数,如设置合理的堆大小、限制元空间大小、优化线程栈大小等。同时,优化代码以减少不必要的对象创建和内存泄漏也是关键。此外,了解并利用JVM的内存管理特性,...
在开发Spring Cloud应用程序时,经常会遇到一个问题,那就是内存占用过高,这对本地开发环境来说是一个显著的挑战。即使没有大量的请求,内存的高消耗也可能导致IDE(集成开发环境)变得卡顿甚至崩溃。例如,一个...
3. **进程大小**:它涵盖了Java堆、本地内存及加载的可执行文件和库所占用的内存总和。在32位操作系统上,进程的虚拟地址空间上限通常为4GB,但操作系统内核会预留一部分,留给应用程序的可用内存通常在2GB至3GB之间...
2. **分析策略**:观察内存使用情况,查找不再使用的对象是否仍被引用,以及这些对象占用的空间大小。 3. **代码审查**:检查是否有不当的静态引用、循环依赖等情况。 #### 五、具体解决方案 1. **合理设置JVM参数...