通常面试如果说会java,这个问题一般必问,如果能从堆内存划分、回答到垃圾回收器、再到GC监控,这样就比较满意了 JVM进行GC的时候会停止应用程序的执行,除了GC线程外,其他线程都处于等待状态,所以GC的优化很多时候就是尽量减少停顿时间。 说到Java垃圾回收,先有必要介绍一下java的内存结构, ...
分类:
编程语言 时间:
2017-07-26 12:30:50
阅读次数:
195
如何去给对象分配内存?大方向讲,就是在堆上分配(但也可能经过JIT编译后被拆散为标量类型并间接地在栈上分配) ①对象优先在Eden分配 大多数条件下,对象在Eden中分配,当Eden内存不够的时候,虚拟机将发起一次Minor GC。 java堆占10MB,Eden占8MB,创建前三个对象在Eden中 ...
分类:
其他好文 时间:
2017-07-23 12:44:09
阅读次数:
196
①Serial收集器 最基本、发展历史最悠久,JDK1.3之前是唯一的新生代收集器 单线程处理器:它不仅仅只会使用一个CPU或一条收集线程去完成垃圾收集工作,更重要的是在它进行垃圾收集时,必须暂停其他所有的线程工作,直到它收集完成。 现在依然是虚拟机运行在Client模式下的默认新生代收集器。 特点 ...
分类:
其他好文 时间:
2017-07-22 18:24:50
阅读次数:
244
程序计数器,虚拟机栈,本地方法栈这三个区域随线程而生,随线程而灭;栈中的栈帧随着方法的进入和退出而有条不紊地执行着出栈和入栈操作。每个桢栈中分配多少内存基本上是在类结构确定下来时就已知的,因此这几个区域的内存分配和回收都具备确定性,在这几个区域内就不需要过多考虑回收的问题,因为方法结束或线程结束时, ...
分类:
其他好文 时间:
2017-07-19 01:16:15
阅读次数:
186
版权声明:本文为博主原创文章,转载请注明出处,欢迎交流学习! 在堆内存中存放着Java程序中几乎所有的对象实例,堆内存的容量是有限的,Java虚拟机会对堆内存进行管理,回收已经“死去”的对象(即不可能再被任何途径使用的对象),释放内存。垃圾收集器在对堆内存进行回收前,首先要做的第一件事就是确定这些对 ...
分类:
编程语言 时间:
2017-07-17 23:52:30
阅读次数:
235
JVM在运行java程序的过程中会把他所管理的内存划分为若干个不同的数据区域。这些区域都有各自的用途和创建、销毁时间。有些区域随着虚拟机的启动而存在。有些区域则依赖用户线程的启动和结束而建立和销毁。依据《Java虚拟机规范1.7》规定,Java虚拟机所管理的内存分为下面几个区域: 程序计数器、Jav ...
分类:
其他好文 时间:
2017-07-16 21:24:24
阅读次数:
174
iostat:统计并报告你的设备的CPU状态和I/O状态数据。mpstat:监控和显示关于CPU的细节信息。pidstat:统计正在运行的进程/任务的CPU、内存等信息。sar:保存和报告不同资源(CPU、内存、输入输出、网络、内核等)的详细信息。sadc:系统活动数据收集器,用于为sar收集后台的 ...
分类:
其他好文 时间:
2017-07-13 16:34:58
阅读次数:
184
这里以HotSpot为例,且所说的对象指普通的Java对象,不包括数组和Class对象等。 对象创建的过程 对象的内存布局 对象的访问定位 ...
分类:
编程语言 时间:
2017-07-10 13:27:26
阅读次数:
219
Overview 走近Java:介绍Java发展史 第二部分:自动内存管理机制 程序员把内存控制的权利交给了Java虚拟机,从而可以在编码时享受自动内存管理。但另一方面一旦出现内存泄漏和溢出等问题,就需要了解一些底层的知识来进行错误排查。 自动内存管理机制:介绍内存是如何划分的。 垃圾收集器与内存分 ...
分类:
编程语言 时间:
2017-07-09 12:41:40
阅读次数:
231
垃圾收集器 引用计数器: 从gc日志可以看出是回收了,java虚假没有选用引用计数器算法管理内存 可达性分析算法 ?线程池中线程是维持一个数量还是,用已经有的线程? 回收方法区 垃圾收集器 垃圾收集器根据应用场景和内存回收范围来选择。根据新生代、老年代,高性能服务器、客户端,计算密集场景、高响应场景... ...
分类:
其他好文 时间:
2017-07-08 21:13:03
阅读次数:
308