`
can_do
  • 浏览: 266390 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

【Do家】深入理解JVM

阅读更多
1、JVM运行时数据区

>>>解释如下:

JVM运行时数据区==>5块==>Heap、MethodArea(RuntimeConstantPool)||MetaSpace、VMStack、NativeMethodStack、ProgramCounterRegister
  ==>其中Heap和MethodArea是所有线程共享的;
  ==>而:ProgramCounterRegister、VMStack、NativeMethodStack是线程隔离的,即仅在当前线程范围有效;
  ==>线程开的越多,导致VMStack和NativeMethodStack变大,一个线程对应两个stack,一个VMStack,一个是NativeMethodStack。
【Vip】JVM Memory=>Heap + Non-Heap
       >>Non-Heap=>Non-Heap=MethodArea=>MethodArea=PermGen+CodeCache
       >>Heap=YoungGen + OldGen(TenuredGen)


2、编译器模式:-Xint || -client || -server


3、JVM时间消耗:类加载时间 || 编译时间(ComplieTime) || 垃圾收集时间(GC Time)|| 用户程序时间

==>编译时间:JIT 编译热点代码(Hotspot code)的耗时
==>JIT会将热代码编译为本地代码
==>运行期编译,会占用运行时间
==>运行期动态编译可能优于C/C++的静态编译方式


4、GC:

==>避免运行时自动扩展(-Xms与-Xmx相同 -XX:PermSize与-XX:MaxPermSize相同)


5、JVM上的多线程

==>JVM上的多线程是通过线程轮流切换并分配处理器执行时间的方式来实现的,在任何一个确定的时刻,一个处理器(对于多核处理器来说是一个内核)只会执行一条线程中的指令。
==>这就是为什么jetty在分配Acceptor时,算法为:setAcceptors(Math.max(1, (Runtime.getRuntime().availableProcessors() + 3) / 4));
==>理论上真正并行线程数不超过CPU核数,这个是针对cpu密集型说的,实际上,可以配置更多线程增大并行度,来充分利用CPU;

【温馨提示】
如果您觉得满意,可以选择支持下,您的支持是我最大的动力:

分享到:
评论

相关推荐

    JVM指令集.zip

    熟悉JVM指令集有助于深入理解Java程序的运行机制,对于性能优化、问题排查、JVM调优等都有重要意义。例如,通过查看字节码,可以分析方法的运行开销,找出潜在的性能瓶颈。 6. **实际应用** 在实际开发中,开发者...

    java基础及中级面试题+jvm面试题+集合面试题

    最后,集合面试题会涉及Java集合框架的深入理解: 1. **集合接口**:List、Set、Queue、Map等接口的特点和使用场景。 2. **HashMap与HashTable**:对比两者的异同,理解线程安全和非线程安全的区别。 3. **...

    JVM详解之汇编角度理解本地变量的生命周期

    从汇编角度理解本地变量的生命周期,有助于我们深入认识JVM的工作机制。本地变量(Local Variables)是在Java方法中声明的变量,它们的生命周期与方法的执行紧密相关。 本地变量的生命周期始于方法的调用,当方法被...

    一份通向理想互联网公司的面试汇总,包括 Java基础、Java并发、JVM、MySQL

    Java虚拟机是Java程序的运行环境,理解JVM对于优化程序性能至关重要: 1. **内存模型**:堆内存、栈内存、方法区、本地方法栈和程序计数器。 2. **垃圾回收**:GC算法(如标记-清除、复制、标记-整理、分代收集)和...

    JVM:Pedersen博士的CS326编程语言代码

    这些阶段旨在帮助理解JVM的工作原理和编程语言的执行过程。下面我们将深入探讨每个阶段以及与Java相关的知识点。 **阶段1 - 操作数堆栈** 在这一阶段,重点是操作数堆栈,它是JVM的一个核心组件。操作数堆栈(也...

    使用java理解程序逻辑

    本文档“使用Java理解程序逻辑”旨在帮助初学者和有经验的开发者深入理解程序设计的基本原理和Java语言的核心特性。下面,我们将详细探讨其中可能涉及的知识点。 1. **程序逻辑**:程序逻辑是程序设计的基础,它...

    java基础知识总结

    通过深入理解JVM的工作原理、安全机制和基本语法,开发者能够更好地编写高效、安全的Java代码。同时,对面向对象编程的理解有助于设计出结构良好、易于维护的软件系统。对于初学者,可以从简单的程序开始实践,逐步...

    java学习资料(全方位)

    - **JVM原理**:理解类加载机制、内存模型(堆、栈、方法区等)、垃圾收集机制。 3. **Java框架**: - **Spring**:学习Spring的核心概念,如依赖注入、AOP(面向切面编程)、事务管理。 - **Spring Boot**:...

    java面试宝典

    6. **JVM**:深入理解JVM的工作原理,包括类加载机制、字节码执行、内存区域划分,以及如何进行性能优化。 7. **多线程**:知道如何创建和使用线程,理解同步机制(synchronized,Lock),了解死锁、活锁和饥饿现象...

    Java面试题详细(校招版)

    1. 内存模型:理解JVM的内存区域,包括堆、栈、方法区等。 2. 垃圾回收:了解垃圾回收的基本原理,如可达性分析和引用类型。 3. 类加载机制:理解双亲委派模型,知道如何自定义类加载器。 以上只是Java面试中可能...

    Java对象的生命周期[参照].pdf

    在这个过程中,理解JVM(Java虚拟机)的角色至关重要,因为它是对象生命周期的主要管理者。 首先,让我们了解一下JVM的结构。JVM是Java虚拟机的缩写,它的主要任务是执行符合Java字节码规范的.class文件。JRE(Java...

    不定期收集整理Java相关面试题.zip

    2. **面向对象编程**:深入理解类、对象、继承、封装、多态等概念。熟悉访问修饰符(public, private, protected, default)以及构造器的作用。理解抽象类和接口的区别,以及如何使用final关键字。 3. **集合框架**...

    java面试题

    13. **JVM优化**:理解JVM的运行机制,包括类加载、内存模型、垃圾回收策略等,并能够进行性能调优。 14. **算法与数据结构**:面试中可能涉及简单的算法题,如排序、查找,以及链表、树、栈、队列等基础数据结构的...

    JAVA面试笔试题目

    3. **集合框架**:深入理解ArrayList、LinkedList、HashSet、HashMap等数据结构的实现原理和应用场景,以及它们之间的性能差异。还要掌握泛型、迭代器和集合的转换。 4. **多线程**:了解Thread类、Runnable接口,...

    Java面试题,包含上百家公司面试真题,及个人在学习中总结的相关面试题,希望对你有所帮助!

    - **封装、继承、多态**:这是Java面向对象的三大特性,需要深入理解它们的概念和实际应用。 - **构造器**:了解构造器的作用,包括无参构造器和带参构造器,以及构造器的重载。 - **抽象类与接口**:知道两者的...

    java面试题测试代码.zip

    - 深入理解JVM内存模型(堆、栈、方法区、本地方法栈和程序计数器)。 8. **设计模式**: - 单例模式、工厂模式、观察者模式、装饰器模式等常见的设计模式及其应用场景。 9. **最新技术趋势**: - Spring Boot...

    一些面试题【Java后端】

    - 继承与多态:深入理解继承的概念,以及多态在Java中的体现和应用。 - 封装与抽象:掌握接口和抽象类的区别,理解封装的意义。 - 接口与内部类:理解接口的作用,以及内部类的种类和应用场景。 3. **集合框架**...

    Java面试宝典2013版

    深入理解Java虚拟机(JVM)的工作原理,包括内存模型(堆、栈、方法区等)、垃圾回收机制、类加载过程以及JVM调优工具,可以帮助开发者解决性能瓶颈,提升应用程序运行效率。 七、数据库操作 在Java开发中,数据库...

Global site tag (gtag.js) - Google Analytics