
Java内存管理
berber78
这个作者很懒,什么都没留下…
展开
-
节省内存的String.intern()
首先String不属于8种基本数据类型,String是一个对象。 因为对象的默认值是null,所以String的默认值也是null;但它又是一种特殊的对象,有其它对象没有的一些特性。 new String()和new String(“”)都是申明一个新的空字符串,是空串不是null; String str=”kvill”; String str=new String (“kvill”);的区别:原创 2015-04-19 15:21:18 · 776 阅读 · 0 评论 -
shallow heap例说
public class Person{ String name; int age; public Person(String a, int b){ name = a; age = b; } } 上面类实例的shallow heap是16,因为对象头是8字节,成员变量int是4字节、St原创 2015-08-18 17:34:32 · 738 阅读 · 0 评论 -
JVM内存
首先我们来了解JVM specification中的JVM: 主要包括两个子系统和两个组件: Class loader(类装载器) 子系统,Execution engine(执行引擎) 子系统;Runtime data area (运行时数据区域)组件, Native interface(本地接口)组件。 Class load原创 2015-09-03 17:47:41 · 533 阅读 · 0 评论 -
内存概念随笔
如果说一个对象已经不被任何程序逻辑所需要但是还存在被根元素引用的情况,我们可以说这里存在内存泄露。 MAT 支持用 OQL(Object Query Language)对 heap dump 中的对象进行查询,支持对线程的分析等。 JVM根据generation(代)来进行GC,generation被分为young generation(年轻代)、tenured generation(老年代)、pe原创 2015-08-18 16:21:45 · 691 阅读 · 0 评论 -
Java GC、新生代、老年代
堆大小 = 新生代 + 老年代。默认下,新生代 ( Young ) = 1/3 的堆空间大小,老年代 ( Old ) = 2/3 的堆空间大小; 新生代 ( Young ) 被细分为 Eden 和 两个 Survivor 区域,这两个 Survivor 区域分别被命名为 from 和 to,以示区分。默认的,Edem : from : to = 8 : 1 : 1; JVM 每次只会使用 Eden原创 2015-09-14 18:06:45 · 2496 阅读 · 0 评论 -
swap、page、mmap和Ashmem
【swap 和 page】Linux系统通过2种方法进行内存管理,“调页算法(page)”,“交换技术(swap)”。调页算法是将内存中最近不常使用的页面换到磁盘上,把常使用的页面(活动页面)保留在内存中供进程使用。交换技术是系统将整个进程,而不是部分页面,全部换到磁盘上。【swap 和 page】Linux的swap分区:交换空间是专门用于临时存储内存的一块磁盘空间,通常在页面调度和交换进程数据时原创 2015-11-23 15:56:07 · 1495 阅读 · 0 评论 -
Java虚拟机运行时数据区
【本文来自网路,仅供参考】 经常有人把Java内存区分为堆内存(Heap)和栈内存(Stack),这种区分方法比较粗糙,Java内存区域的划分实际上远比这复杂。Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域,主要包括: 虚拟机栈 本地方法栈 PC寄存器 方法区 堆区 这些数据区域中大致可原创 2016-04-21 19:59:32 · 560 阅读 · 0 评论