摘要: 对于一般Java程序员开发的过程中,不需要考虑垃圾回收。 如何判定对象为垃圾对象; 引用计数法 可达性分析法 如何回收垃圾对象; 回收策略(标记清除、复制、标记整理、分带收集算法) 常见的垃圾回收器(Serial、Parnew、Cms、G1) 何时回收垃圾对象 判定垃圾对象 引用计数算法 在对象中添 阅读全文
posted @ 2021-11-03 17:10 鹏了个鹏鹏 阅读(92) 评论(0) 推荐(0)
摘要: 分为线程共享区和线程独占区 程序计数器 程序计数器(处于线程独)占区是一个非常小的内存空间,它可以看成是当前线程所执行的字节码的行号指示器。此区域是唯一一个在Java虚拟机规范中没有规定任何OutOfMemoryError情况的区域。如果线程执行的是java方法,这个计数器记录的是正在执行的虚拟字节 阅读全文
posted @ 2021-11-03 17:05 鹏了个鹏鹏 阅读(59) 评论(0) 推荐(0)
摘要: jdk自带可视化监控工具,在目录C:\Program Files\Java\jdk1.8.0_171\bin下,直接在命令行输入jconsole即可运行,源代码在tools.jar包中。 运行如下代码,不断向集合中加入元素,堆内存不断增大: 同时可以看出Eden区呈折线变化,这是由于垃圾回收机制的回 阅读全文
posted @ 2021-11-03 16:45 鹏了个鹏鹏 阅读(155) 评论(0) 推荐(0)
摘要: 如上面代码所示,不断向堆内存中加入对象,会造成异常:Exception in thread “main” java.lang.OutOfMemoryError: Java heap space,运行过程中计算机内存不断上升直到报错。 可以通过添加参数-XX:+HeapDumpOnOutOfMemor 阅读全文
posted @ 2021-11-03 16:37 鹏了个鹏鹏 阅读(209) 评论(0) 推荐(0)
摘要: JDK全程为Java SE Development Kit(Java开发工具),提供了编译和运行Java程序所需的各种资源和工具,包括:JRE+java开发工具。JRE全称为Java runtime environment(Java运行环境),包括:虚拟机+java的核心类库。JVM是运行Java程 阅读全文
posted @ 2021-11-03 16:35 鹏了个鹏鹏 阅读(41) 评论(0) 推荐(0)
摘要: 线程不安全类与写法 【线程不安全】:如果一个类类对象同时可以被多个线程访问,如果没有做同步或者特殊处理就会出现异常或者逻辑处理错误。【1. 字符串拼接】:StringBuilder(线程不安全)、StringBuffer(线程安全)【2. 日期转换】: SimpleDateFormat(线程不安全, 阅读全文
posted @ 2021-10-27 11:18 鹏了个鹏鹏 阅读(58) 评论(0) 推荐(0)
摘要: 避免并发两种方式 不可变对象 线程封闭 线程封闭: 把对象封装到一个线程里,只有这一个线程可以看到这个对象,即使这个对象不是线程安全也不会出现任何线程安全问题,因为只在一个线程里 堆栈封闭:局部变量,无并发问题。栈封闭是我们编程当中遇到的最多的线程封闭。什么是栈封闭呢?简单的说就是局部变量。多个线程 阅读全文
posted @ 2021-10-27 11:17 鹏了个鹏鹏 阅读(20) 评论(0) 推荐(0)
摘要: 安全发布对象 在静态初始化函数中初始化一个对象将对象的引用保存到volatile类型域或者AtomicReference对象中将对象的引用保存到某个正确构造对象的final类型域中将对象的引用保存到一个由锁保护的域中 /** * 懒汉模式 * 双重同步锁单例模式 * @author Guo * */ 阅读全文
posted @ 2021-10-27 11:14 鹏了个鹏鹏 阅读(27) 评论(0) 推荐(0)
摘要: 发布对象 发布对象:使一个对象能够被当前范围之外的代码所用。对象溢出:一种错误的发布。当一个对象还没有构造完成时,就使它被其他线程所见。 阅读全文
posted @ 2021-10-27 11:13 鹏了个鹏鹏 阅读(23) 评论(0) 推荐(0)
摘要: 一、线程安全性 定义:当多个线程访问某个类时,不管运行时环境采用何种调度方式,或者这些线程将如何交替执行,并且在主调代码中不需要任何额外的同步或协同,这个类都能表现出正确的行为,那么就称这个类是线程安全的。 1. 原子性:提供了互斥访问,同一时刻只能有一个线程来对它进行访问。 Atomic包: At 阅读全文
posted @ 2021-10-27 11:12 鹏了个鹏鹏 阅读(47) 评论(0) 推荐(0)