- 浏览: 146595 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (95)
- java (25)
- 数据库 (9)
- js (0)
- 框架 (10)
- 小问题 (8)
- 转载 (2)
- 配置开发环境 (6)
- 其它 (4)
- 功能记录 (2)
- 安全 (1)
- shell (3)
- spring ibaitis struts2 redis desc (1)
- spring security3.1 (1)
- 小问题 环境 (1)
- 小问题 环境 DelegatingFilterProxy cannot be cast to Filter (0)
- redis filter java (1)
- java redis (2)
- spring quartz 集群 批处理 (1)
- java mybatis (1)
- Junit soap (1)
- mock junit (0)
- mock junit spring (1)
- java jsoup (0)
- jsoup (1)
- python27 pycharm (1)
- maven pom (1)
- java log (1)
- mybatis 分页 (1)
- mysql (1)
- 业务 (1)
- java 测试 (1)
- java zookeeper 批处理 (1)
- hive hadoop (1)
- hive (1)
- hadoop (1)
- maven archetype (1)
- python rsa (1)
- python 页面分析 (1)
- python (0)
最新评论
-
wuyafeng123:
秒杀活动设计思路 -
indiajohns:
非常感谢,很快解决了我的问题
jmesa查询条件中文的编码转换问题 -
yujiaao:
太好了,感谢啊!这行在我这好象不行:URLDecoder.de ...
jmesa查询条件中文的编码转换问题 -
michael_wong:
呵呵,找到啦。在这里有全部源码:http://ishare. ...
Maven权威指南 的simple-parent 工程源码 -
michael_wong:
我也在找啊
Maven权威指南 的simple-parent 工程源码
一个对象占用的堆空间首先是和它有多少个成员变量直接相关
下面执行的结果是:
'before' heap: 552496, 'after' heap: 4552496
heap delta: 4000000, {class A} size = 40 bytes
public class Sizeof { public static void main (String [] args) throws Exception { // Warm up all classes/methods we will use runGC (); usedMemory (); // Array to keep strong references to allocated objects final int count = 100000; Object [] objects = new Object [count]; long heap1 = 0; // Allocate count+1 objects, discard the first one for (int i = -1; i < count; ++ i) { A object = null; // Instantiate your data here and assign it to object object = new A (); if (i >= 0) objects [i] = object; else { object = null; // Discard the warm up object runGC (); heap1 = usedMemory (); // Take a before heap snapshot } } runGC (); long heap2 = usedMemory (); // Take an after heap snapshot: final int size = Math.round (((float)(heap2 - heap1))/count); System.out.println ("'before' heap: " + heap1 + ", 'after' heap: " + heap2); System.out.println ("heap delta: " + (heap2 - heap1) + ", {" + objects [0].getClass () + "} size = " + size + " bytes"); for (int i = 0; i < count; ++ i) objects [i] = null; objects = null; } private static void runGC () throws Exception { // It helps to call Runtime.gc() // using several method calls: for (int r = 0; r < 4; ++ r) _runGC (); } private static void _runGC () throws Exception { long usedMem1 = usedMemory (), usedMem2 = Long.MAX_VALUE; for (int i = 0; (usedMem1 < usedMem2) && (i < 500); ++ i) { s_runtime.runFinalization (); s_runtime.gc (); Thread.currentThread ().yield (); usedMem2 = usedMem1; usedMem1 = usedMemory (); } } private static long usedMemory () { return s_runtime.totalMemory () - s_runtime.freeMemory (); } private static final Runtime s_runtime = Runtime.getRuntime (); } // End of class class A{ private String a="abbfffffffff"; private String b; private String d; private String e; private String d1; private String e1; private String d2; private String e2; public String getA() { return a; } public void setA(String a) { this.a = a; } public String getB() { return b; } public void setB(String b) { this.b = b; } public String getD() { return d; } public void setD(String d) { this.d = d; } public String getE() { return e; } public void setE(String e) { this.e = e; } }
下面执行的结果是:
'before' heap: 552496, 'after' heap: 4552496
heap delta: 4000000, {class A} size = 40 bytes
发表评论
-
详解ReentrantReadWriteLock
2016-04-21 14:34 0package java.util.concurrent. ... -
java内部类使用场景体会
2016-04-21 11:56 966内部类的作用: 1.完善多重继承。 疑问在于:多重继承可以用 ... -
logBack用法,记录
2015-11-24 15:37 10301. Logback使用手册 系统中的日志采用 slf4j ... -
表产生sequence功能,测试并发
2015-11-18 16:21 661@Test public void testSerial ... -
Demo
2014-11-03 21:20 0package com.xly.jsoup.nbjy; /* ... -
反射小计
2014-10-07 11:32 529Test.java方法dd重载 class Test{ ... -
Btrace测试
2014-07-17 17:56 641偶尔看到BTrace,必须记录一下 利用hotSpot虚拟机 ... -
BeanCopier和BeanUtils实现对象复制,处理date类型
2013-03-29 12:52 4496没有废话 先是BeanUtils的实现类型: impo ... -
liferay 为JournalArticle添加分类
2013-03-21 15:45 1114/** * 为网页内容添加分类 ... -
liferay直接跳转到网页内容编辑页面修改的friendlyUrl效果
2013-03-21 14:11 1266找到portlat-impl.jar包,在目录 port ... -
JMS_DEMO
2013-03-14 20:25 15211.安装activeMq 修改service.pr ... -
Xmemcached/jedis springdemo
2013-02-20 13:13 932Xmemcached: HelloWordTest.ja ... -
规则检查功能的demo
2013-01-31 12:55 0规则检查Demo,包括mina,线程池功能 -
使用spring的线程安全web应用(翻译Thread-safe webapps using Spring)
2013-01-11 16:38 1919http://www.javalobby.org/articl ... -
JAVA虚拟机锁机制的升级流程
2013-01-08 14:52 2881http://ifeve.com/java-synchroni ... -
NIO学习
2012-11-27 11:49 1515最需要关注的是,应用进程、内核、IO三个概念。 所谓java的 ... -
Tomcat的HttpConnector/HttpProcesser(tomcat源码学习)
2012-11-21 10:47 1273先启动进程HttpProcesser,等请求到达后加入sock ... -
web.xml加载
2011-02-18 17:24 916转: web.xml文件内容加载顺序为:context- pa ... -
webLogic中 Cannot parse POST parameters of request: 的问题小记
2010-11-25 13:25 7833报错内容: weblogic.utils.NestedRunt ... -
数字签名Java实现小记
2010-08-30 10:42 1553一个证书发放单位给的证书里面包括一个发送单位的公钥,当前用户的 ...
相关推荐
了解对象占用的内存大小有助于我们优化资源使用,减少内存泄漏,并提高程序效率。 "java-sizeof-0.0.4"是一个用于分析Java对象内存占用的工具,它可以帮助开发者更好地理解对象在运行时的内存消耗。这个工具提供了...
当程序创建的对象过多或单个对象占用内存过大时,如果没有足够的空闲内存来分配新对象,JVM就会抛出“OutOfMemoryError: Java heap space”错误。这可能是由于以下原因造成的: 1. **初始堆大小设置不当**:默认...
在Java开发与运维中,`java.lang.OutOfMemoryError: Java heap space`是一个常见的错误信息,它表明JVM(Java虚拟机)的堆内存已经耗尽,无法再分配新的对象。这通常发生在程序运行时创建了大量对象而没有及时释放,...
- **Java heap space**: 堆是JVM管理的一部分内存,用于存储对象实例和数组。当堆内存无法满足新对象的分配需求时,就会抛出此异常。 **描述:“搜集整理关于java错误处理:java.lang.OutOfMemoryError: Java heap ...
### Myeclipse下java.lang.OutOfMemoryError: Java heap space的解决方案 在使用Myeclipse进行Java开发时,可能会遇到`java.lang.OutOfMemoryError: Java heap space`这个错误提示。这种异常通常发生在应用程序占用...
在Java编程中,"java heap space"内存溢出是一个常见的问题,它通常发生在应用程序尝试分配超过JVM堆内存限制的对象时。这个问题对于任何Java开发者来说都至关重要,因为如果不妥善处理,可能会导致程序崩溃。以下是...
这时需要使用内存分析工具,如VisualVM或MAT(Memory Analyzer Tool),来分析堆转储文件,找出哪些对象占用过多内存并查找泄漏源头。 3. **优化对象使用**:避免创建大量大对象,尤其是长时间存活的对象,因为它们...
如果程序运行时创建了大量对象或者对象占用的空间超过了当前设置的堆内存大小,就会出现内存溢出错误。 #### 三、调整Java堆内存的方法 根据题目中的内容,我们可以总结出两种常见的调整Java堆内存的方式:通过...
HeapAnalyzer是一款Java内存分析工具,由IBM开发,它可以帮助开发者检查和分析Java堆内存的状态,找出可能存在的内存泄漏或者过度占用内存的对象。通过分析heap dump文件,HeapAnalyzer可以展示对象的分布情况,识别...
当堆空间不足以满足新对象的创建或已存在对象的升级时,就会抛出“Java heap space”异常。 解决这个问题有以下几种策略: 1. 增加JVM堆大小:可以通过调整JVM启动参数 `-Xms` 和 `-Xmx` 来设定初始堆大小和最大堆...
1. **项目规模过大**:如果项目中的类文件数量过多或者单个对象占用内存较大时,很容易超出默认的堆内存限制。 2. **内存分配不合理**:某些情况下,由于配置不当导致JVM启动时分配的堆内存过小。 3. **内存泄漏**:...
- 及时释放不再使用的对象引用,以便垃圾回收器可以尽早回收这些对象占用的内存。 - 使用弱引用、软引用或虚引用来替代强引用,在适当情况下减少内存占用。 3. **定位并修复内存泄漏**: - 使用内存分析工具如...
这个错误通常发生在创建大量对象或者单个对象占用过多内存时。 一、问题描述与原因分析: 当JVM在执行垃圾收集(Garbage Collection, GC)过程中,如果98%的时间用于GC,并且剩余的堆内存不足以满足2%的需要,就会...
IBM Java堆内存分析工具——HeapAnalyzer,是一款专为IBM J9 VM设计的强大内存分析工具,它可以帮助开发者深入理解Java应用程序的内存使用情况,检测并解决内存泄漏问题,从而提升应用性能。本文将详细介绍Heap...
这款工具通过对Java堆内存的深入分析,帮助开发者定位那些占用过多内存的对象,从而优化应用性能。在Java开发过程中,内存管理是关键的一环,尤其是对于长时间运行的服务,内存泄漏可能导致系统性能下降,甚至崩溃。...
当程序创建过多的对象或单个对象占用过大内存,以至于超过了JVM分配的堆内存大小时,就会抛出“Java heap space”异常。 在Eclipse中,"Building workspace"是Eclipse自动构建项目的过程,它包括编译、索引更新等...
1. **堆内存(Heap)**:这是Java对象的主要存储区域,所有通过`new`关键字创建的对象都会被分配到堆上。堆内存被所有线程共享,且在JVM启动时创建。堆内存分为新生代(Young Generation)、老年代(Tenured ...
GC主要负责自动回收不再使用的对象所占用的内存空间,以防止内存泄漏。Java提供了多种垃圾收集器,如Serial GC、Parallel GC、CMS(Concurrent Mark Sweep)和G1(Garbage-First)等,每种GC策略都有其适用场景和优...