摘抄自周志明老师的《深入理解Java虚拟机:JVM高级特性与最佳实践》13.2.2 线程安全的实现方法 1.名词解释 同步是指锁哥线程并发访问共享数据时,保证共享数据同一时刻只被一个线程访问 互斥同步(阻塞同步)是一种悲观的并发策略,总是认为只要不去做正确的同步措施(加锁),那就肯定会出现问题。 阻 ...
分类:
编程语言 时间:
2018-10-22 17:55:36
阅读次数:
172
查看步骤 cmd执行命令: java -XX:+PrintCommandLineFlags -version 输出如下(举例): 针对上述的-XX:UseParallelGC,这边我们引用《深入理解Java虚拟机:JVM高级特性与最佳实践》的介绍: 也就是说,打开此开关,使用的垃圾收集器是:新生代( ...
分类:
其他好文 时间:
2018-10-22 17:49:13
阅读次数:
168
1.首先展示一下实例代码(Son.java & Father.java) 2.将son.java文件编译为son.class文件,然后使用javap反编译查看Son的字节码指令来分析Son的加载顺序,更利于理解(javap -v -c Son > p.txt)。 3.执行代码"new Son();" ...
分类:
编程语言 时间:
2018-10-20 12:54:49
阅读次数:
182
一、java的运行时数据区域 Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。这些区域都有各自的用途,以及创建和销毁的时间,有的区域随着虚拟机进程的启动而存在,有些区域则依赖用户线程的启动和结束而建立和销毁。根据《Java虚拟机规范(JavaSE 7版)》的规定 ...
分类:
编程语言 时间:
2018-10-19 21:53:45
阅读次数:
212
原理 要想理解 Java 反射,首先要弄清类的加载过程。 比如这行代码 。 我们想要创建一个 Person 对象,并用 p 作为对象的引用。 在 Java 虚拟机会先执行类的加载,然后才生成对象(分配内存空间)。 在类的加载过程中,类加载器负责把类编译好的 class (字节码)文件加入到内存中,并 ...
分类:
编程语言 时间:
2018-10-19 20:47:34
阅读次数:
211
这个系列应该改个名字,叫做java 命令行窗口(运行在windows环境下)突然退出,但是端口号存在,java虚拟机进程也存在。 昨天出差到客户现场一番排查。排除了之前的一系列推测(根据程序日志发现,程序异常退出是有规律的,每3小时一次,在57分异常退出) 就在我一筹莫展,几近放弃的时候客户UPS有 ...
分类:
编程语言 时间:
2018-10-19 14:00:23
阅读次数:
159
Java内存模型即JavaMemoryModel,简称JMM。JMM定义了Java虚拟机(JVM)在计算机内存(RAM)中的工作方式。JVM是整个计算机虚拟模型,所以JMM是隶属于JVM的。如果我们要想深入了解Java并发编程,就要先理解好Java内存模型。Java内存模型定义了多线程之间共享变量的可见性以及如何在需要的时候对共享变量进行同步。原始的Java内存模型效率并不是很理想,因此Java1
分类:
编程语言 时间:
2018-10-18 00:53:15
阅读次数:
147
在虚拟机运行的过程中,如果可以跟踪系统的运行状态,那么对于问题的故障排查会有一定的帮助,为此,虚拟机提供了一些跟踪系统状态的参数,使用给顶的参数执行java虚拟机,就可以在系统运行时打印相关日志,用于分析实际问题。我们进行迅疾参数配置,其实主要是围绕着堆、栈、方法区进行配置。 堆分配参数 -XX:+ ...
分类:
其他好文 时间:
2018-10-17 20:43:19
阅读次数:
233
1. Java内存区域与内存溢出异常 Java内存区域与内存溢出异常 运行时数据区域 程序计数器 当前线程所执行的字节码的行号指示器 当前线程私有 不会出现OutOfMemoryError情况 java虚拟机栈 线程私有,生命周期与线程相同 java方法执行的内存模型,每个方法执行的同时都会创建一个 ...
分类:
编程语言 时间:
2018-10-17 19:02:33
阅读次数:
146
JVM之类加载器(ClassLoader)基本介绍 类加载器用于将class文件加载到JVM中去执行。下面介绍类加载器涉及到的基本概念和加载基本过程。 一、Java虚拟机与程序的生命周期 在运行Java程序时,会启动JVM进程,该进程中会使用一个线程去执行我们的Java程序。在如下几种情况下,Jav ...
分类:
编程语言 时间:
2018-10-17 14:51:47
阅读次数:
230