【正文】 声明:本文只是做一个总结,有关jvm的详细知识可以参考之前的系列文章,尤其是那篇:Java虚拟机详解04—-GC算法和种类。那篇文章和本文是面试时的重点。 面试必问关键词:JVM垃圾回收、类加载机制。 先把本文的目录画一个思维导图:(图的源文件在本文末尾) 一、Java引用的四种状态: 强 ...
分类:
编程语言 时间:
2017-09-19 15:34:25
阅读次数:
368
在上一节提到的FileChannel中提供了lock()/tryLock()方法可以获得文件锁FileLock对象,从而锁定文件,这里的文件锁是进程级别的锁,而非线程锁。 lock()方法是阻塞试的,当调用该方法且无法得到文件锁,程序将一直阻塞。 tryLock()方法是非阻塞式的加锁方法,如果获得 ...
分类:
编程语言 时间:
2017-09-18 15:05:17
阅读次数:
226
以下文章来自与: http://www.jianshu.com/p/fabad9250b1b 一、什么是JVM? JVM是Java Virtual Machine(Java虚拟机)的缩写,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。由一套字节码指令集、一组寄存器、一个栈、一个垃圾回收堆和一 ...
分类:
其他好文 时间:
2017-09-18 15:04:32
阅读次数:
250
以下内容来自: http://www.jianshu.com/p/ac7760655d9d JVM相关知识详解 一、Java虚拟机指令集 Java虚拟机指令由一个字节长度的、代表某种特定含义的操作码(Opcode)以及其后的零个至多个代表此操作参数的操作数构成。虚拟机中许多指令并不包含操作数,只有一 ...
分类:
其他好文 时间:
2017-09-18 14:57:48
阅读次数:
175
方法区、堆、栈、程序计数器、本地方法栈方法区(永久去):类定义,常量,静态变量,各个线程共享的内存区域,即时编译的代码heap:类对象,list,数组 线程共享区栈:程序执行时是线程,线程执行就是调用方法,有(局部变量),每个线程都有自己的(线程私有的);每个方法调用都产生一个栈帧,调用方法就是入栈 ...
分类:
编程语言 时间:
2017-09-17 19:04:10
阅读次数:
103
2.1.1 简单讲一下java的跨平台原理 由于各操作系统(windows,linux)支持的指令集,不是完全一致的,就会让我们的程序在不同的操作系统上要执行不同程序代码,java开发了适用不同操作系统及位数的java虚拟机来屏蔽系统之间的差异,提供了统一的接口,对于我们java开发者而言,你只需要 ...
分类:
编程语言 时间:
2017-09-17 01:32:55
阅读次数:
253
今天周六,又开始啃一遍《深入理解java虚拟机》每次读的感觉不一样,大学代码量较少,读起来也就死记硬背。 1.堆:长度可变,运行时使用的变量;存放对象(new )和数组之类; 2.栈:长度可变,在分配内存之前,固定了其大小,分配之后大小不可变。存放基本数据类型和对象引用 3.堆栈:JVM的调用链 J ...
分类:
其他好文 时间:
2017-09-16 19:07:50
阅读次数:
293
1、泛型仅仅是java的语法糖,它不会影响java虚拟机生成的汇编代码,在编译阶段,虚拟机就会把泛型的类型擦除,还原成没有泛型的代码,顶多编译速度稍微慢一些,执行速度是完全没有什么区别的. 2、实现GBK编码字节流到UTF-8编码字节流的转换: 操作步骤就是先解码再编码 用new String(sr ...
分类:
编程语言 时间:
2017-09-16 18:43:26
阅读次数:
140
WebSphere上面的java虚拟机存在默认编码方式,默认为ISO-8859-1. 在JAVA虚拟机的定制属性页面上,添加如下内容: 1.修改服务器编码类型: (1)前台修改方法: 服务器-》服务器类型-》WebSphere Application Server-》 SuiteServer -》 ...
分类:
Web程序 时间:
2017-09-16 14:53:07
阅读次数:
307
一、什么是Java内存模型 Java虚拟机规范中试图定义一种Java内存模型(Java Memory Model,JMM)来屏蔽掉各种硬件和操作系统的访问差异,以实现让Java程序在各种平台下都能达到一致的内存访问效果。在此之前,主流程序语言(如C/C++等)直接使用物理硬件和操作系统的内存模型,因 ...
分类:
编程语言 时间:
2017-09-15 19:07:37
阅读次数:
205