一、堆的含义 jvm堆的区域主要是用来存放对象的实例,它的空间大小是JVM内存区域中占比重最大的,也是jvm最大的内存管理模块,最重要的是,这个区域是垃圾收集器主要管理的区域,这意味着我们在考虑垃圾回收优化的时候,首先就要想到堆中的区域。 二、方法区 方法区同样是jvm的内存区域,它和堆一样,都是线 ...
分类:
编程语言 时间:
2018-11-08 00:25:39
阅读次数:
630
垃圾收集器 新生代收集器: 一、Serial(串行收集器) 工作方式:这是一个单线程收集器,在进行垃圾收集时,必须暂停其他所有的工作线程,直到垃圾收集完成。(Stop The World) 优点:简单而高效,单线程对于单核CPU来说,由于没有切换线程的开销,所以性能高。 缺点:单线程收集,且必须暂停 ...
分类:
其他好文 时间:
2018-11-07 23:01:53
阅读次数:
169
1,对象没有引用 2,作用域发生未捕获异常 3,程序在作用域正常执行完毕 4,程序执行了System.exit() 5,程序发生意外终止(被杀进程等) ...
分类:
其他好文 时间:
2018-11-07 22:13:53
阅读次数:
338
一、基础篇 JVM JVM内存结构 堆、栈、方法区、直接内存、堆和栈区别 Java内存模型 内存可见性、重排序、顺序一致性、volatile、锁、final 垃圾回收 内存分配策略、垃圾收集器(G1)、GC算法、GC参数、对象存活的判定 JVM参数及调优 Java对象模型 oop-klass、对象头 ...
分类:
其他好文 时间:
2018-11-06 00:48:40
阅读次数:
231
1、JS的回收机制 JavaScript垃圾回收的机制很简单:找出不再使用的变量,然后释放掉其占用的内存,但是这个过程不是实时的,因为其开销比较大,所以垃圾回收系统(GC)会按照固定的时间间隔,周期性的执行。 到底哪个变量是没有用的?所以垃圾收集器必须跟踪到底哪个变量没用,对于不再有用的变量打上标记 ...
分类:
Web程序 时间:
2018-11-03 18:22:14
阅读次数:
189
一、Java 虚拟机内存原型 寄存器:我们在程序中无法控制。 栈:存放基本类型的数据和对象的引用,但对象本身不存放在栈中,而是存放在堆中。 堆:存放用new产生的数据。 静态域:存放在对象中用static定义的静态成员。 常量池:存放常量。 非 RAM 存储:硬盘等永久存储空间。 二、常量池(con ...
分类:
编程语言 时间:
2018-11-03 15:20:53
阅读次数:
170
[TOC] 一 提出问题 问题 1. 生产环境发生了内存溢出该如何处理? 2. 生产环境应该给服务器分配多少内存? 3. 如何对垃圾收集器的性能进行调优? 4. 生产环境CPU负载飙升如何处理? 5. 生产环境应该给应用分配多少线程? 6. 如何不加log就确定是否执行了某一行代码? 7. 如何不加 ...
分类:
其他好文 时间:
2018-11-02 01:55:21
阅读次数:
379
内存模型 Java堆(Heap) Java堆(Java Heap)是Java虚拟机所管理的内存中最大的一块。Java堆是被所有线程共享的一块内存区域,在虚拟机启动时创建。此内存区域的唯一目的就是存放对象实例,几乎所有的对象实例都在这里分配内存。 Java堆是垃圾收集器管理的主要区域,因此很多时候也被 ...
分类:
其他好文 时间:
2018-10-29 20:03:26
阅读次数:
135
堆(线程共享):虚拟机启动时创建,用于存放对象实例,几乎所有的对象(包含常量池)都在堆上分配内存, 当对象无法再该空间申请到内存时将抛出OutOfMemoryError异常。同时也是垃圾收集器管理的主要区域。 可通过 -Xmx –Xms 参数来分别指定最大堆和最小堆 ...
分类:
编程语言 时间:
2018-10-25 18:00:50
阅读次数:
209
查看步骤 cmd执行命令: java -XX:+PrintCommandLineFlags -version 输出如下(举例): 针对上述的-XX:UseParallelGC,这边我们引用《深入理解Java虚拟机:JVM高级特性与最佳实践》的介绍: 也就是说,打开此开关,使用的垃圾收集器是:新生代( ...
分类:
其他好文 时间:
2018-10-22 17:49:13
阅读次数:
168