随笔分类 - Java 虚拟机
摘要:JVM参数主要有几种分类 标准参数 标准参数,顾名思义,标准参数中包括功能以及输出的结果都是很稳定的,基本上不会随着JVM版本的变化而变化。标准参数以-开头,如:java -version、java -jar等,通过java -help可以查询所有的标准 参数。 非标准参数 非标准参数以-X开头,是
阅读全文
摘要:什么是线程安全 当多个线程同时访问一个对象的时候,不需要考虑什么额外的操作就能获取正确的值,就是线程安全的。 线程安全的程度 1.不可变 不可变的对象一定是线程安全的,因为值始终只有一个。 final,这种安全是最直接最纯粹的。 2.绝对线程安全 不管运行时环境如何,调用者都不需要任何额外的同步措施
阅读全文
摘要:即时编译器 Java程序最初都是通过解释器进行执行,当发现某个方法或者代码块被运行得非常频繁,这些代码就被认为是热点代码,为了提高这些代码得运行效率,虚拟机会把热点代码编译成本地机器码,并进行优化,运行时完成这个任务的后端编译器被称为即时编译器。 解释器与编译器 主流Java虚拟机内部同时包含解释器
阅读全文
摘要:是什么是类加载机制 Java虚拟机将class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这个过程就是类加载机制。 类的生命周期 一个类从加载到内存开始,到卸载出内存为止,一共经历七个阶段: 加载——>验证——>准备——>解析——>初始化——>使用
阅读全文
摘要:Java的无关性 由于计算机领域中有很多操作系统和硬件平台同时在竞争,所以,很多编程语言的程序设计会与其运行的平台和操作系统产生耦合,这样就大大增加了程序员的工作,为了适应不同的平台,需要修改很多代码。这样,具有无关性特征的Java语言就开始受欢迎了。 平台的无关性:由于有可以运行在不同硬件平台和操
阅读全文
摘要:大内存硬件上的程序部署策略 单个虚拟机管理大内存 出现问题 如果JVM中的堆内存太小,就会频繁地出发GC,而每次GC会将用户线程暂停,所以,频繁地GC会导致长时间的停顿。如果扩大计算的内存的大小,就能降低GC触发的频率。 32位系统最大支持4g内存,而64位操作系统可以最大支持128g内存,所以,我
阅读全文
摘要:进程状况工具:jps jps(JVM Process Status Tool) 作用 用于虚拟机中正在运行的所有进程。显示虚拟机执行的主类名称以及这些进程的本地虚拟机唯一ID。可以通过RMI协议查询开启了RMI服务的远程虚拟机进程状态,参数hostid为RMI注册表中注册的主机名 特点 使用频率最高
阅读全文
摘要:垃圾收集器 新生代收集器 1.Serial收集器 特点: 单线程工作,收集的时候就会停止其他所有工作线程,用户不可知不可控,会使得用户界面出现停顿。简单高效,是所有收集器中额外内存消耗最少的。没有线程交互的开销,单线程收集效率高。对于客户端模式下的虚拟机是一个很好的选择。采用标记复制算法。 2.Pa
阅读全文
摘要:所谓垃圾收集器的作用就是回收内存空间中不需要了的内容,需要解决的问题是回收哪些数据,什么时候回收,怎么回收。 Java虚拟机的内存分为五个部分:程序计数器、虚拟机栈、本地方法栈、堆和方法区。 其中程序计数器、虚拟机栈和本地方法栈是线程私有的,所以对于何时回收这三部分内存只需要根据线程的生存周期就可以
阅读全文
摘要:对象的创建 虚拟机遇到一条字节码new指令时,开始对象创建过程。 首先去检查这个指令的参数是否能在常量池定位到一个类的符号引用;检查这个符号引用代表的类是否已被加载、解析和初始化,如果没有就必须执行相应的类加载过程;根据方法区中该类的信息确定对象的所需空间大小;虚拟机为新生对象分配内存;将对象实例的
阅读全文
摘要:文章目录 程序计数器定义作用特点 Java虚拟机栈定义特点本地方法栈定义 Java堆定义 特点方法区定义特点运行常量池 直接内存总结 Java虚拟机的内存空间分为五个部分: 方法区堆虚拟机栈本地方法栈程序计数器 程序计数器 定义 程序计数器是一个块较小的内存空间,它可以看作是当前线程所执行的字节码的
阅读全文

浙公网安备 33010602011771号