JVM
振哥在,世界充满爱!
计划+坚持!+思考
展开
-
Java内存区域——运行时数据区域
1、运行时数据区域Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。根据《Java虚拟机规范(JavaSE 7 版本)》的规定,Java虚拟机所管理的内存的运行时数据区域包括两类:所有线程共享的数据区和线程隔离的数据区。其中,线程共享的数据区包括:方法区(Method Area)和堆(Heap)。而,线程隔离的数据区包括:虚拟机栈(VM Stack),本原创 2016-07-23 08:56:59 · 420 阅读 · 0 评论 -
与HotSpot虚拟机对象有关的问题
2016-07-16HotSpot虚拟机对象问题1:在分配内存空间时,如何解决对象A和对象B同时使用原来的指针分配内存? 解决这个问题有两种方案: 1)对分配内存空间的动作进行同步处理——实际上虚拟机采用的CAS配上失败重试的方式保证更新操作的原子性。 2)把内存分配的动作按照线程划分在不同的空间之中进行,即每个线程在Java堆中预先分配一小块内存,称为本地线原创 2016-07-23 09:01:39 · 534 阅读 · 0 评论 -
如何判断对象是否“存活”
2016-07-17如何判断对象是否“存活”1、常见的两种判断对象是否“存活”的算法。1)引用计数算法给对象中添加一个引用计数器,每当有一个地方引用它时计数器值就加1;当引用失效时,计数器就减1;任何时刻计数器为0的对象就是不可能再被使用的。(说明:虚拟机并不是通过引用计数算法来判断对象是否存活的)2)可达性分析算法算法思路:以“GC Roots”的对象作为起始点,从这些点原创 2016-07-23 09:02:54 · 587 阅读 · 0 评论 -
JVM中的垃圾收集算法
2016-07-18垃圾收集算法这里介绍几种垃圾收集算法的思想。1)标记—清除算法 该算法是最基础的算法,分为“标记”阶段和“清除”阶段。首先标记出所有需要回收的对象,在标记完成后统一回收所有被标记的对象。 缺点:1)效率问题。“标记”和“清除”两个过程的效率都很低。2)空间问题。产生不连续的内存碎片,导致在分配较大对象时会提前触发另一次垃圾收集动作。2)复制算原创 2016-07-23 09:04:25 · 214 阅读 · 0 评论 -
JDK的命令行工具和可视化工具学习笔记
JDK 的命令行工具1、jps显示指定系统内所有的HotSpot虚拟机的进程 可以列出正在运行的虚拟机进程,并显示虚拟机执行类型名称以及这些进程的本地虚拟机唯一ID(LVMID)。 -q:只输出LVMID,省略主类的名称; -m:输出是启动虚拟机时传递给主类main()函数的参数; -l:输出主类的全名,如果进程执行的原创 2016-08-29 21:45:26 · 686 阅读 · 0 评论 -
HotSpot虚拟机七种垃圾收集器学习笔记
这里整合了hotspot虚拟机的7种垃圾收集器:一、Serial收集器 特点:单线程收集器,它不仅仅只会使用一个CPU或一条收集线程去完成垃圾收集工作,更重要的是在它进行垃圾收集时,必须暂停其他所有的线程工作,直到它收集完成。 Serial收集是虚拟机运行在Client模式下的默认新生代收集器。优点是简单而高效,对于限定单个CPU的环境来说,Serial没有原创 2016-08-21 22:19:07 · 862 阅读 · 0 评论 -
Java中类加载过程
类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括:加载(Loading)、验证(Verification)、准备(Preparation)、解析(Resolution)、初始化(Initialization)、使用(Using)和卸载(Unloading)7个阶段。其中准备、验证、解析3个部分统称为连接(Linking)。如图所示。 加载、验证、准备、初始化和卸载这5个转载 2017-07-12 10:36:43 · 226 阅读 · 0 评论 -
JVM调优学习总结
1)调优的工具:Jconsole,jProfile,VisualVMJconsole: jdk自带,功能简单,但是可以在系统有一定负荷的情况下使用。对垃圾回收算法有很详细的跟踪。JProfiler:商业软件,需要付费。功能强大。VisualVM:JDK自带,功能强大,与JProfiler类似。2)如何调优观察内存释放情况,集合类检查,对象数等。上面这些调优工具都提供了强原创 2017-08-24 20:17:48 · 473 阅读 · 0 评论