对于一门语言实现一种通用执行环境,可以叫做虚拟机(系统与进程的通用平台),也可以叫做解释器。需要实现以下几个部分:1语言内置对象在虚拟机中的实现,一般有字符串,列表,hash,object对象等,字符串一般采用字符串池来实现。2内存管理,包括了内存分配,内存回收,垃圾回收等内容3独立于os平台的中间码,java字节码,python字节码等4虚拟机的执行字节码的部分:模拟cpu在执行语言层的“汇编”
原创
2018-10-02 19:14:32
2137阅读
点赞
1评论
目录1 JDK8的JVM内存模型2 JVM中有哪几块内存区域?Java 8之后对内存分代做了什么改进? 3 你知道JVM是如何运行起来的吗?我们的对象是如何分配的?3.1 首先要知道JVM如何加载class文件3.2 ClassLoader类加载器3.3 ClassLoader的双亲委派机制3.4 最后一定会有线程去执行我们写的代码4
原创
2020-10-31 13:05:08
401阅读
本笔记为阅读周志明老师的《深入理解Java虚拟机:JVM高级特性与最佳实践(第3版)》所整理的重点知识和一些自己整理的学习笔记,方便加深记忆与理解。自动内存管理1. Java内存区域与内存溢出异常c++层序开发人员需要对每一个对象负责,即他们需要担负每个对象生命从开始到终结的维护责任。Java程序员,在虚拟机自动内存管理机制下,不需要对每个对象进行delete/free,不容易出现内存泄漏或者内存
转载
2023-12-26 20:44:07
48阅读
深入理解Java虚拟机——Hotpot虚拟机对象 Java对象的创建 当Java虚拟机遇到一条字节码new指令时,首先将去检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否已被加载、解析和初始化过。如果没有,那必须先执行相应的类加载过程。 在类加载检查通过后,
转载
2021-05-14 09:30:00
309阅读
2评论
在本篇文章当中主要给大家介绍在 cpython 虚拟机当中的集合 set 的实现原理(哈希表)以及对应的源代码分析。
深入理解 Python 虚拟机:集合(set)的实现原理及源码剖析在本篇文章当中主要给大家介绍在 cpython 虚拟机当中的集合 set 的实现原理(哈希表)以及对应的源代码分析。数据结构介绍typedef struct {
PyO
转载
2024-05-19 09:35:19
696阅读
初学编程的小伙伴在问:“Python和Java到底有什么区别?到底是学Python还是Java。”一副惆怅的样子,难以下手。今天,给大家总结了关于两者的十二点区别。一、实话实话,Python虚拟机没有java强,java虚拟机是java的核心Python的核心是可以很方便地使用c语言函数或c++库。二、Python是全动态性的可以在运行时自己修改自己的代码,java只能通过变通方法实现。Pytho
转载
2023-09-10 21:59:26
77阅读
深入理解Java虚拟机读书笔记(四) 文章目录深入理解Java虚拟机读书笔记(四)加载验证准备解析初始化类加载器方法调用 类加载流程 一个类型从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期将会经历加载(Loading)、验证(Verification)、准备(Preparation)、解析(Resolution)、初始化 (Initialization)、使用(Using)和卸载(
转载
2024-07-04 07:14:39
40阅读
1.jvm基础知识 1.什么是 jvm ? JVM全称Java Virtual Machine,翻译过来也就是Java虚拟机。
JVM的实际功能也是和翻译一样,类似于一台虚拟操作系统,是通过在实际的计算机上模拟各种计算功能来实现的。JVM有着自己完善的硬件架构,例如处理器、堆栈、寄存器等,还具有相应的指令系统。
JVM是JRE(Java Runtime Environment
转载
2023-07-12 15:18:42
119阅读
[《深入理解Java虚拟机:JVM高级特性与最佳实践(第二版》读书笔记与常见相关面试题总结本节常见面试题(推荐带着问题阅读,问题答案在文中都有提到):简单说说类加载过程,里面执行了哪些操作?对类加载器有了解吗?什么是双亲委派模型?双亲委派模型的工作过程以及使用它的好处。前言:代码编译的结果从本地转换为字节码,是存储格式发展的一小步,却是编程语言发展的一大步。1概述上一节我们已经知道了类文件结构,在
转载
2018-05-11 15:19:53
252阅读
一、对象的创建过程 虚拟机遇到一条new指令时,首先将去检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否已被加载、解析和初始化过。如果没有,那就先执行相应的类加载过程。 在类加载检查通过后,接下来虚拟机将为新生对象分配内存。对象所需内存的大小在类加载完成后便
原创
2021-10-25 10:36:38
497阅读
本节常见面试题(推荐带着问题阅读,问题答案在文中都有提到):简单说说类加载过程,里面执行了哪些操作?对类加载器有了解吗?什么是双亲委派模型?双亲委派模型的工作过程以及使用它的好处。前言:代码编译的结果从本地转换为字节码,是存储格式发展的一小步,却是编程语言发展的一大步。1 概述上一节我们已经知道了类文件结构,在class文件中描述的各种信息最终都需要加载到虚拟机中之后才能运行和使用。那么虚拟机是如
转载
2021-01-17 20:10:04
382阅读
深入理解JVM虚拟机 - 虚拟机的发展历史 内容基本来自《深入理解JVM虚拟机》。算是对于发展历史的一点个人总结。
原创
2022-04-22 10:51:39
284阅读
引言通过上篇博客,我们已经了解了Java虚拟机的内存区域的划分及每个区域存储的内容,那么,本篇博客将以HotSpot虚拟机和内存区域Java堆为例,继续深入了解内部是如何创建、布局和访问的。探秘之旅1. 对象的创建Java是一门面向对象的编程语言,Java程序运行过程中无时无刻都有对象被创建出来。在语言层面上,仅仅是一个new关键字而已,而在虚拟机中,又是怎样一个过程呢? 1) 检查,如果没有被加
转载
2023-07-12 14:15:27
102阅读
Java虚拟机运行原理
一、虚拟机栈(线程私有)
概念:虚拟机栈简称栈,存放着基本类型的变量数据和对象的引用,但对象本身不存在栈中,而存放在堆中或者常量池中。
原理:①栈的分配:每个主线程分配一个栈;
&n
转载
2023-09-13 21:54:14
62阅读
今天想跟下Python虚拟机的启动,看看以调试模式跑起python_d.exe是怎么一个过程。
1. d:\Python-2.7.2\Modules\python.c文件是main函数,直接调用Py_Main函数; 2. 在Py_Main函数中,初始化函数为Py_Initialize();,而后者直接调用Py_InitializeEx(1);函数; 3. 在Py_InitializeE
转载
2024-04-18 21:06:46
122阅读
《PYTHON源码剖析》的第十二章:Python虚拟机中的类机制 这一章主要讲到了Python中的类。其实在看完前面十一章后对于动态语言的理解已经深刻了不少了,所以对于类机制的疑问也主要是在于如何通过a=A()这样的语句去创建一个实例,然后去调用a中的方法。至于如对于基类的继承之类的内容其实不是很在意。这一章主要可以分成三个方面,先是type到class的转变,主要讲了基类和
转载
2023-10-06 19:13:18
94阅读
在Python虚拟机框架这一章中,我们通过PyEval_EvalFrameEx看到了Python虚拟机的整体框架。而这章开始,我们将了解Python虚拟机是如何完成对Python的一般表达式的执行,这里的“一般表达式”包括最基本的对象创建语句,打印语句。至于if、while等表达式,我们将之归类于控制流语句,将再后面的章节介绍简单内建对象的创建我们先来看一段简单的对象创建语句:demo.pyi =
转载
2024-06-05 19:05:30
19阅读
其实Python运行环境是一个全局性的概念,而执行环境实际就是一个栈帧,是Code Block对应的概念,两者之间存在着本质上的区别,在以后的运行操作过程中就可以了解到他们呢两者之间的不同。运行时环境的初始化过程非常地复杂,后面将用单独的一章来剖析,这里假设初始化的动作已经完成,我们已经站在了Python虚拟机的门槛外,只需要轻轻推动一下***张骨牌,整个执行过程就像多米诺骨牌一样,一环扣一环地展
转载
2023-08-06 12:39:54
103阅读
《Python源码剖析》笔记第七章:编译结果1、大概过程运行一个Python程序会经历以下几个步骤:由解释器对源文件(.py)进行编译,得到字节码(.pyc文件)然后由虚拟机按照字节码一条一条执行对应的指令2、PyCodeObject程序运行时,Python会将编译结果都存放在内存中的PyCodeObject对象中。每一个名字空间都对应着一个PyCodeObject对象。typedef struc
转载
2023-07-03 21:06:10
269阅读
Python字节码我们知道,Python源代码在执行前,会先将源代码编译为字节码序列,Python虚拟机就根据这些字节码进行一系列的操作,从而完成对Python程序的执行。在Python2.5中,一共定义了104条字节码指令:opcode.h #define STOP_CODE 0
#define POP_TOP 1
#define ROT_TWO 2
#define ROT_THREE 3
转载
2023-08-24 17:54:14
67阅读