一、为什么要使用线程池? a) 减少开销。因为创建和销毁线程需要和底层操作系统交互,每个线程都去做这个操作,会浪费大量的时间,降低系统效率 b) 避免内存溢出。线程池的线程数量不会超过最大值,不使用线程池可能会造成无限制的创建线程 二、为什么不使用Executors来创建线程池 a) Java中有自 ...
分类:
编程语言 时间:
2020-03-11 22:10:41
阅读次数:
497
1.堆内存溢出 堆内存中主要存放对象、数组等,只要不断地创建这些对象,并且保证GC Roots到对象之间有可达路径来避免垃圾回收机制清除这些对象,当这些对象所占据空间超过最大堆容量时,就会产生OutOfMemeorgError的异常,堆内存溢出异常示例如下: public class ArrayDe ...
分类:
其他好文 时间:
2020-03-09 18:19:45
阅读次数:
70
原文地址https://www.zhihu.com/question/40560123 简单来说,操作系统就像资源分配人员,你要使用内存的时候分给你,你用完了还给它。如果你使用了没有分配给你的内存就是内存溢出,如果你用完了没有还就是内存泄漏。会引起的问题:内存溢出存在的问题是你用了没有分配给你的内存 ...
分类:
其他好文 时间:
2020-03-09 17:53:04
阅读次数:
70
一 垃圾回收机制详解(了解) 1、什么是垃圾回收机制 垃圾回收机制(简称GC)是Python解释器自带一种机制,专门用来回收不可用的变量值所占用的内存空间 2、为什么要用垃圾回收机制 程序运行过程中会申请大量的内存空间,而对于一些无用的内存空间如果不及时清理的话会导致内存使用殆尽(内存溢出),导致程 ...
分类:
编程语言 时间:
2020-03-06 09:17:28
阅读次数:
65
2.通过jmap监控内存使用情况 2.1 监控堆内存 jamp -heap 12840 2.2 监控内存中对象的数量及其大小 查看所有对象的数量以及大小包括类型:jmap -histo 14116 | more 查看所有对象的数量以及大小包括类型:jmap -histo:live 14116 | m ...
分类:
Web程序 时间:
2020-03-04 19:29:14
阅读次数:
101
什么是jmap? jmap是JDK自带的工具软件,主要用于打印指定Java进程(或核心文件、远程调试服务器)的共享对象内存映射或堆内存细节。 可以使用jmap生成Heap Dump。 在Java命令Java Dump和Java命令:Jstack中分别有关于Java Dump以及线程 Dump的介绍。 ...
分类:
其他好文 时间:
2020-03-04 15:07:52
阅读次数:
120
Jvm优化 了解下我们为什么要学习 JVM优化 掌握 jvm的运行参数以及参数的设置 掌握 jvm的内存模型(堆内存) 掌握 jamp命令的使用以及通过MAT工具进行分析 掌握定位分析内存溢出的方法 为什么要学习JVM优化 JVM被称为Java虚拟机,所有Java程序的运行都依赖于JVM 1.应用运 ...
分类:
其他好文 时间:
2020-03-03 20:31:35
阅读次数:
87
Java 解析、生成 Excel 比较有名的框架有 Apache poi、jxl 。但他们都存在一个严重的问题就是非常的耗内存,poi 有一套 SAX 模式的 API 可以一定程度的解决一些内存溢出的问题,但 POI 还是有一些缺陷,比如 07 版 Excel 解压缩以及解压后存储都是在内存中完成的 ...
分类:
编程语言 时间:
2020-03-03 13:05:45
阅读次数:
70
idea编译大项目很慢或者内存溢出的解决方法 1、配置idea本身内存: help -> edit custom VM otpions 2、file-> settings ->compiler 3、file -> settings -> Maven -> import ...
分类:
其他好文 时间:
2020-03-01 21:29:00
阅读次数:
86
不断的对于某操作重复调用执行称为递归调用,递归函数执行的这个过程中只有进栈(开辟空间),没有出栈,直到最后一次调用完毕了,才逐个出栈,所以递归函数在执行的时候非常的占用内存资源;如果执行的次数过多了,会产生内存溢出的现象;所以一定要控制递归的层数,当符合某一条件时要终止递归调用,几乎所有的递归都能用 ...
分类:
编程语言 时间:
2020-03-01 00:40:12
阅读次数:
66