前言 垃圾回收是Java体系最重要的组成部分之一,和C/C++不同,Java虚拟机提供了全自动的内存管理方案,尽量减少了我们在内存资源管理方面的工作量,但是这套方案也并不完美,因此我们也需要深入学习垃圾回收的算法,在工作中遇到内存溢出等问题时也容易更快找到问题所在 一、引用计数法 引用计数法是最古老 ...
分类:
编程语言 时间:
2019-09-12 14:58:59
阅读次数:
113
1.垃圾回收概述 随着程序的不断运行,程序所产生的对象必将越来越多,而系统的内存则是有限的,所以,将没有用的对象进行清除是程序长期稳定运行的关键. 垃圾回收主要关注三个问题 什么对象应该被回收? 当然是没有用的对象.当对象不再被引用时,我们认为该对象应该被回收.如何判断对象是否还被引用,会在后面详述 ...
分类:
编程语言 时间:
2019-09-11 13:40:08
阅读次数:
100
之前看过《深入了解Java虚拟机》感觉容易忘,今天写一篇博客加深一下印象。 JVM的内存分配和垃圾回收(GC)主要发生在Java堆中。而Java堆根据对象的存活时间可以分为新生代和老年代,而新生代又细分为Eden区、From Survivor区、To Survivor区,这是由于新生代中的垃圾回收算 ...
分类:
其他好文 时间:
2019-09-09 22:20:02
阅读次数:
109
java序列化 为什么要使用序列化 我们在java内存中的对象是无法直接进行网络通信或者将其持久化的,因为对象时无法进行网络传输或者IO通信的,我们必须在使用它之前将其转换成某种可传输的格式,那么就是序列化了。序列化传输之后要将其转化为可使用的对象,就是反序列化的过程了。所以序列化就是将一个对象转化 ...
分类:
编程语言 时间:
2019-09-08 10:08:34
阅读次数:
95
首先,JVM除了程序计数器之外,都可能发生内存溢出OutOfMemoryError(OOM)异常。这里主要对可能发生内存溢出的区域,原因进行总结。 1.JAVA虚拟机栈 虚拟机栈是线程私有的,虚拟机栈主要存储局部变量。Java虚拟机规范中,规定了此区域会抛出两种异常: (1)如果请求栈深度大于虚拟机 ...
分类:
编程语言 时间:
2019-09-08 00:02:58
阅读次数:
85
一、JVM内存模型 1.JVM运行时数据区 二、Java内存模型(JMM) 1.JMM 三、Java对象模型 1.Java对象在JVM中的存储模型称之为Java对象模型。 四、总结 1.JVM内存模型,和Java虚拟机的运行时区域有关。 2.Java内存模型,和Java的并发编程有关。 3.Java ...
分类:
编程语言 时间:
2019-09-07 00:31:36
阅读次数:
97
开头的数字代表了GC发生的时间,也就是从java虚拟机启动以来经过的秒数 GC日志开头的[GC和[FULL GC说明了这次垃圾收集的停顿类型,而不是用来区分新生代GC还是老年代GC的。如果有FULL,说明这次GC是发生了Stop-The-World的。如果是调用了System.gc()触发的收集,则 ...
分类:
其他好文 时间:
2019-09-06 00:59:51
阅读次数:
96
1.JAVA技术1.1.JAVA技术的组成Java是一个面向对象的编程语言,由sun公司所研发,是目前世界上使用最广泛的编程语言之一Java技术的组成:JVM:Java虚拟机,提供Java的运行环境JAVA编程语言:提供给程序员编写代码JAVAClass:Java的类文件格式,决定Java程序编译出的字节码应该遵循的规范,用于兼容不同的JVMJAVAAPI:提供Java的API接口,缩短应用程序的
分类:
编程语言 时间:
2019-09-05 16:43:47
阅读次数:
93
1、什么是类加载器 虚拟机设计团队把类加载阶段中的“通过一个类的全限定名来获取描述此类的二进制字节流”这个动作放到Java虚 机外部实现,以便让应用程序自己决定如何去获取所需要的类。实现这个动作的模块称为“类加载器”。 周志明. 深入理解Java虚拟机:JVM高级特性与最佳实践(第2版) 机械工业出 ...
分类:
其他好文 时间:
2019-09-05 13:46:35
阅读次数:
85
重构:改善既有代码的设计代码整洁之道深入理解Java虚拟机Java并发编程的艺术《修改代码的艺术》《程序员的职业素养》代码大全程序员修炼之道深入理解java虚拟机Java并发编程实战(已下载)Effective java 中文版Spring 揭秘重构。已买入研磨设计模式 https://github ...
分类:
其他好文 时间:
2019-09-05 13:45:25
阅读次数:
122