内存
百里挑一
这个作者很懒,什么都没留下…
展开
-
深入分析 ThreadLocal 内存泄漏问题
前言ThreadLocal 的作用是提供线程内的局部变量,这种变量在线程的生命周期内起作用,减少同一个线程内多个函数或者组件之间一些公共变量的传递的复杂度。但是如果滥用 ThreadLocal,就可能会导致内存泄漏。下面,我们将围绕三个方面来分析 ThreadLocal 内存泄漏的问题ThreadLocal 实现原理ThreadLocal为什么会内存泄漏原创 2016-11-04 10:39:27 · 986 阅读 · 1 评论 -
ThreadLocal 内存泄露的实例分析
前言之前写了一篇《 深入分析 ThreadLocal 内存泄漏问题 》是从理论上分析ThreadLocal的内存泄漏问题,这一篇文章我们来分析一下实际的内存泄漏案例。分析问题的过程比结果更重要,理论结合实际才能彻底分析出内存泄漏的原因。案例与分析问题背景在 Tomcat 中,下面的代码都在 webapp 内,会导致WebappClassLoader泄漏,无法被回原创 2016-11-04 10:41:03 · 477 阅读 · 0 评论 -
深入解析OutOfMemoryError(上)
在Java中,所有对象都存储在堆中。他们通过new关键字来进行分配,JVM会检查是否所有线程都无法在访问他们了,并且会将他们进行回收。在大多数时候程序员都不会有一丝一毫的察觉,这些工作都被静悄悄的执行。但是,有时候在发布前的最后一天,程序挂了。Exception in thread "main" java.lang.OutOfMemoryError: Java heap space原创 2016-11-15 10:14:41 · 1391 阅读 · 0 评论 -
深入解析OutOfMemoryError(下)
永久代除了JVM中的新生代和老年代外,JVM还管理着一片叫‘永久代’的区域,它存储了class信息和字符串表达式等对象。通常,你不会观察到永久代中的垃圾回收;大多数的垃圾回收发生在应用程序堆中。但是不像它的名字,在永久代中的对象不会是永久不变的。举个例子,被应用程序classloader加载的class,当不再被classloader引用时就会被清理掉。当应用程序服务被频繁的热部署时就可能原创 2016-11-15 10:17:56 · 528 阅读 · 0 评论 -
Java直接(堆外)内存使用详解
本篇主要讲解如何使用直接内存(堆外内存),并按照下面的步骤进行说明:相关背景-->读写操作-->关键属性-->读写实践-->扩展-->参考说明希望对想使用直接内存的朋友,提供点快捷的参考。数据类型下面这些,都是在使用DirectBuffer中必备的一些常识,暂作了解吧!如果想要深入理解,可以看看下面参考的那些博客。基本类型长度在Java中有很多的原创 2016-11-28 12:58:46 · 1970 阅读 · 0 评论 -
哪个更快:Java堆还是本地内存
使用Java的一个好处就是你可以不用亲自来管理内存的分配和释放。当你用new关键字来实例化一个对象时,它所需的内存会自动的在Java堆中分配。堆会被垃圾回收器进行管理,并且它会在对象超出作用域时进行内存回收。但是在JVM中有一个‘后门’可以让你访问不在堆中的本地内存(native memory)。在这篇文章中,我会给你演示一个对象是怎样以连续的字节码的方式在内存中进行存储,并且告诉你是应该怎样存储原创 2016-12-20 10:55:00 · 688 阅读 · 0 评论 -
诊断Java.lang.OutOfMemoryError(OOM)
在跟踪性能问题时,堆内存是首先应该被监控的最重要的组件之一。一旦堆内存的实际使用量超过其所允许的堆空间,就会产生堆内存压力。而这将导致频繁的全面垃圾回收事件,垃圾回收将窃取CPU周期,轻则导致响应时间延迟,重则导致必须重新启动Java虚拟机才能解决的内存溢出错误。内存溢出错误(OOM)当我运行应用时,出现了如下异常:java.lang.OutOfMemoryError: GC转载 2017-02-09 09:54:56 · 445 阅读 · 0 评论