volatile关键字可以说是Java虚拟机提供的最轻量级的同步机制,但是它并不容易完全被正确、完整地理解,以至于许多程序员都习惯不去使用它,遇到需要处理多线程数据竞争问题的时候一律使用synchronized来进行同步。了解volatile变量的语义对了解多线程操作的其他特性很有意义,在本文中我们 ...
分类:
编程语言 时间:
2020-03-09 13:23:19
阅读次数:
73
JVM的内存划分: 方法区:是线程共享的,常量静态变量的JIT(即时编译器)编译后代码也在方法区存放。用来存储已被虚拟机加载的类信息,常量,静态变量,即时编译器编译后的代码等数据。虽然Java虚拟机规范把方法区描述为堆得一个逻辑部分,但是他却有个别名Non-Heap(非堆),目的是为了与Java堆区 ...
分类:
其他好文 时间:
2020-03-09 01:25:48
阅读次数:
56
首先要说一下JVM内存空间分为五部分,分别是:方法区、堆、Java虚拟机栈、本地方法栈、程序计数器 方法区主要用来存放类信息、类的静态变量、常量、运行时常量池等,方法区的大小是可以动态扩展的, 堆主要存放的是数组、类的实例对象、字符串常量池等。 Java虚拟机栈是描述JAVA方法运行过程的内存模型, ...
分类:
其他好文 时间:
2020-03-07 12:58:31
阅读次数:
60
所在包:java.lang.Thread 所有已实现的接口:Runnable 已知直接子类:ForkJoinWorkerThread public class Thread extends Objectimplements Runnable 线程 是程序中的执行线程。Java 虚拟机允许应用程序并发 ...
分类:
其他好文 时间:
2020-03-06 23:44:07
阅读次数:
54
简介toc 简介 Groovy是一种基于JVM(Java虚拟机)的敏捷开发语言,它结合了Python、Ruby和Smalltalk的许多强大的特性,Groovy 代码能够与 Java 代码很好地结合,也能用于扩展现有代码。由于其运行在 JVM 上的特性,Groovy 可以使用其他 Java 语言编写... ...
分类:
其他好文 时间:
2020-03-06 21:56:39
阅读次数:
61
Volatile 关键字 Volatile 是java虚拟机提供的轻量级同步机制(保证可见性,不保证原子性,禁止指令重排) 可见性之前需要了解 JVM(java虚拟机) JMM(java内存模型) javamemory model 不真实存在描述的一种规则规范 定义了程序中各个变量(包括实例字段静态 ...
分类:
编程语言 时间:
2020-03-06 19:28:39
阅读次数:
82
--java跨平台性 能跨平台的是java程序,而不是JVM。 其中JVM是用C/C++开发的,是编译后的机器码,不能跨平台,不同平台下需要安装不同版本的JVM。我们编写的java源码,编译后会生成一种 .class的字节码文件。java虚拟机就是负责将字节码文件翻译成特定的机器码然后运行,也就是说 ...
分类:
其他好文 时间:
2020-03-06 12:49:22
阅读次数:
66
以下是在论坛整理出来的答案: 1.从编译过来来看,JAVA是将.java文件编译成.class文件,运行的时候再由java虚拟机将.class文件进一步编译成对应的机器码进行指令调用。而c语言会预编译成预编译文件,再编译成汇编语言,二进制文件。直接和机器打交道。运行时中间省略了java的很多步骤。 ...
分类:
编程语言 时间:
2020-03-05 13:28:31
阅读次数:
152
环境中替换jar包中class文件,高版本向下兼容。 用jdk1.7编译一个class文件替换 1.8的jar包中同名文件 运行不会报错 设置临时jdk(当前窗口有效): set JAVA_HOME=C:\Program Files\Java\jdk1.7.0_80 set PATH=%JAVA_H ...
分类:
编程语言 时间:
2020-03-04 19:09:29
阅读次数:
65
jstack介绍 jstack是jdk自带的线程堆栈分析工具,使用该命令可以查看或导出 java 应用程序中线程堆栈信息。 jstack用于生成java虚拟机当前时刻的线程快照。线程快照是当前java虚拟机内每一条线程正在执行的方法堆栈的集合,生成线程快照的主要目的是定位线程出现长时间停顿的原因,如 ...
分类:
Web程序 时间:
2020-03-04 15:00:54
阅读次数:
104