1. python 模块文件可以通过编译为字节码的形式: 名字:model.py 顶层文件,主文件test.py 2. 编译后得到编译文件: model.cpython-37.pyc Test.cpython-37.pyc 3. 直接运行python解释后的字节码文件 修改model模块的解释后的字 ...
分类:
编程语言 时间:
2018-08-20 19:06:42
阅读次数:
183
注 :文中所说的 Class 文件并不是特指存在于具体磁盘中的文件,而是一串二进制字节流,无论是以何种形式存在的都可以。 1. 引言 java 类被虚拟机编译之后成为一个 Class 的字节码文件,该字节码文件中包含各种描述信息,最终都需要加载到虚拟机中之后才能运行和使用。那么虚拟机是如何加载这些 ...
分类:
编程语言 时间:
2018-08-20 12:21:56
阅读次数:
189
常量池深度剖析: 在上一次【https://www.cnblogs.com/webor2006/p/9416831.html】中已经将常量池分析到了2/3了,接着把剩下的分析完,先回顾一下我们编译的源文件为: 然后用javap -verbose查看一下编译字节码的信息,其中字符串相关的如下: 而对应 ...
分类:
编程语言 时间:
2018-08-11 01:23:30
阅读次数:
484
1、String对象是不可变的,JDK源码的类的定义如下: 不可变的特性会带来一定的效率问题。比如“+”或“+=”操作字符串带来的性能。 示例1: 使用jdk的命令javap -c反编译,从以下结果可以看到,程序创建了一个StringBuilder对象,并使用append方法拼接,最后将对象转换成最 ...
分类:
其他好文 时间:
2018-08-09 01:18:17
阅读次数:
129
一.目标: 1.什么是类的加载? 2.类的生命周期? 3.类加载器是什么? 4.双亲委派机制是什么? 二.原理 (类的加载过程及其最终产品): JVM将class文件字节码文件加载到内存中, 并将这些静态数据转换成方法区中的运行时数据结构,在堆(并不一定在堆中,HotSpot在方法区中)中生成一个代 ...
分类:
其他好文 时间:
2018-08-08 18:54:45
阅读次数:
157
Java应用程序的运行机制 JAVA利用javac(编译器)将程序文件(后缀名为.java)编译成.class(字节码文件), 最后利用虚拟机(解释器,java)解释执行。 Java虚拟机是实现跨平台的核心机制。不同的操作系统有不同的虚拟机。 在java中始终有一个main函数,它作为程序的入口,程 ...
分类:
编程语言 时间:
2018-08-07 18:53:05
阅读次数:
140
一.前言 物理机的执行引擎是直接在物理硬件如CPU、操作系统、指令集上运行的,但是对于虚拟机来讲,他的执行引擎由自己实现。 执行引擎有统一的外观(Java虚拟机规范),不同类型的虚拟机都遵循了这一规范,输入字节码文件,解析字节码处理,然后输出结果。 二.运行时栈帧结构 1、栈帧概念栈帧(Stack ...
分类:
编程语言 时间:
2018-08-06 14:31:35
阅读次数:
198
概述 编译器是一种计算机程序, 它主要的目的是将便于人编写、阅读、维护的高级计算机语言所写的源代码程序, 翻译为计算机能解读、运行的低阶机器语言的程序, 即可执行文件。而 javac 就是java语言中的编译器, 它用于将 .java 文件转换成JVM能识别的 .class 字节码文件, 反编译则是 ...
分类:
编程语言 时间:
2018-08-04 12:01:25
阅读次数:
137
JDK=JRE+开发工具包; JRE=JVM+核心内库; JVM--java virtual machine(Java虚拟机)。Java语言的一个非常重要的特点就是跨平台,而要实现跨平台就是依靠JVM(Java虚拟机)。不同的平台对应不同的JVM,Java程序编译后生成的字节码文件(.class文件 ...
分类:
其他好文 时间:
2018-08-04 00:36:55
阅读次数:
202
JAVA JAVA语言是一种编译型-解释型语言。同一时候具备编译特性和解释特性(其所谓的编译过程仅仅是将.java文件编程成平台无关的字节码.class文件,并不是像C一样编译成可执行的机器语言)。 作为编译型语言,JAVA程序要被统一编译成字节码文件——文件后缀是class。此种文件在java中又 ...
分类:
其他好文 时间:
2018-08-03 23:13:13
阅读次数:
239