JVM:java虚拟机,Java编译程序将生成Java虚拟机上可运行的目标代码,使得Java程序可以再不同平台不加修改的运行。JVM包含完善的硬件架构,主要分为五大模块—类装载器子系统、运行时数据全、执行引擎、本地方法接口和垃圾收集模块。其没有寄存器,指令集使用Java栈来存储中间数据。 JRE:J ...
分类:
编程语言 时间:
2019-10-04 17:01:04
阅读次数:
83
学习一下java虚拟机系列,之一添加运行参数-XX:+HeapDumpOnOutOfMemoryError -Xms30m -Xmx30m-XX:+HeapDumpOnOutOfMemoryError 这个参数会生成堆栈快照,用于定位异常模拟内存溢出的场景,简单代码:1234567891011121... ...
分类:
其他好文 时间:
2019-10-02 20:45:51
阅读次数:
104
简单介绍Node.js的内存分配和垃圾回收内存分配Node.js是一个由JavaScript V8引擎控制的C++程序V8的内存管理模式一个运行的程序通常是通过在内存中分配一部分空间来表示的。这部分空间被称为驻留集(Resident Set)。V8的内存管理模式有点类似于Java虚拟机(JVM),它... ...
分类:
Web程序 时间:
2019-10-01 11:37:46
阅读次数:
229
记得刚大学毕业时,为了应付面试,疯狂的在网上刷JAVA的面试题,很多都靠死记硬背。其中有道面试题,给我的印象非常之深刻,有个大厂的面试官,顺着这道题目,一直往下问,问到java虚拟机的知识,最后把我给问住了。 我当时的表情是这样的: 后来我有机会面试别人了,也按照他的思路出面试题,很多已经工作了2年 ...
分类:
编程语言 时间:
2019-09-30 21:50:36
阅读次数:
104
1.编译就是将java代码交给编译器进行语法检查,如果没有错误就生成.class文件 2.运行就是将字节码文件(.class)交给java虚拟机执行,如果没有逻辑错误,就成功出现结果。 编译期和运行期内存的分配 1.编译期仅仅知道内存分配的位置和大小,不做具体的分配操作 2.运行期确定真正的分配,确 ...
分类:
其他好文 时间:
2019-09-28 21:56:15
阅读次数:
92
1. Java 内存区域与内存溢出异常1.1 运行时数据区域根据《Java 虚拟机规范(Java SE 7 版)》规定,Java 虚拟机所管理的内存如下图所示。 1.1.1 程序计数器 内存空间小,线程私有。字节码解释器工作是就是通过改变这个计数器的值来选取下一条需要执行指令的字节码指令,分支、循环 ...
分类:
编程语言 时间:
2019-09-27 12:21:59
阅读次数:
60
Java的工作原理 编写,保存为.java文件; 编译,生成.class字节码文件 运行,使用java解释器翻译成机器代码 Java虚拟机 运行java程序的软件环境 什么是jdk(Java development kit) JRE(Java Runtime Environment) JDK包含ja ...
分类:
编程语言 时间:
2019-09-26 21:40:28
阅读次数:
135
java虚拟机内存管理图如下图所示: 1.线程共享区,是所有的线程所共用的,线程共享区有一下几个组成: 1.方法区: 1.运行时常量池,已经被虚拟机加载的类信息(1.类的版本信息,2.字段,3.方法,4.接口等),常量,静态变量,即时编译器编译后的代码等数据。 2.垃圾回收器也会光顾这个区域,例如常 ...
分类:
其他好文 时间:
2019-09-25 15:58:44
阅读次数:
99
感觉好久没有写东西了,于是乎有了这么一篇水文。 先总结下最近的学习情况吧。 学习了下Java虚拟机,对虚拟机的概念更加熟悉了。 学习了下Java编程的建议,虽然还没有很好的吸收,但准备肝一波英文版(并不)。 想到啥说啥系列: 1.JVM。 ①个人觉得一个程序就一个JVM,或者说一个main就是一个J ...
分类:
其他好文 时间:
2019-09-25 15:36:46
阅读次数:
73
先上个图 这是根据《Java虚拟机规范(第二版)》所画的jvm内存模型。 + 程序计数器:程序计数器是用来记录当前线程方法执行顺序的,对应的就是我们编程中一行行代码的执行顺序,如分支,跳转,循环,异常处理等。所以在多线程下,程序计数器必然是线程隔离的,每个线程都有自己独立的程序计数器。注意,Java ...
分类:
其他好文 时间:
2019-09-23 22:14:47
阅读次数:
117