java虚拟机内存管理图如下图所示: 1.线程共享区,是所有的线程所共用的,线程共享区有一下几个组成: 1.方法区:运行时常量池,已经被虚拟机加载的类信息,常量,静态变量,即时编译器编译后的代码等数据 2.java堆:存储对象实例 2.线程独占区,是每一个线程都有自己独立的虚拟机栈,本地方法栈,程序 ...
分类:
编程语言 时间:
2018-02-13 18:58:18
阅读次数:
257
虚拟机把描述类的数据从Class文件加载到内存,并对数据进行检验、转换解析和初始化,最终形成了可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制。在Java语言里,类型的加载、连接和初始化过程都是在程序运行时期完成的。 类的生命周期: 类从被加载到虚拟机内存中开始,到卸载出内存,它的整个生 ...
分类:
编程语言 时间:
2018-02-13 17:59:11
阅读次数:
240
1、配置完Java环境变量之后,仍然不能使用java命令。 解决方法: 2、正确Java代码无法在控制台运行 Java文件可以通过javac命令编译,但无法使用java命令运行。 解决方法: 如果使用的是Windows10系统,可能因为系统安全权限过高,不允许Java虚拟机操作C盘造成的,可以将ja ...
分类:
编程语言 时间:
2018-02-12 13:54:13
阅读次数:
170
【虚拟机参数】 在虚拟机运行的过程中,如果可以跟踪系统的运行状态,那么对于问题的排查会有一定会的帮助,为此,虚拟机提供了一些跟踪系统状态的参数,使用给定的参数执行Java虚拟机,就可以在系统运行时打应相关的日志,用于分析实际问题。我们可以进行虚拟机的参数配置,主要围绕着堆、栈、方法区进行配置。 【堆 ...
分类:
其他好文 时间:
2018-02-11 22:43:26
阅读次数:
196
代码编译的结果从本地机器码转换为字节码,是存储格式发展的一小步,却是编程语言发展的一大步。计算机只认识0和1,所以我们的程序需要经过编译器翻译成由0和1组成的二进制格式才能由计算机执行。经过技术的发展,将编写的程序编译成二进制本地机器码已经不是唯一的选择,越来越多的程序语言选择了与操作系统和机器指令 ...
分类:
编程语言 时间:
2018-02-11 18:09:24
阅读次数:
183
java中static关键字表示静态的意思,主要用于以下三点,static成员变量,static成员方法和static块。在类中如果定义了static类型的对象(变量或者方法),在java虚拟机(JVM)加载类时,该对象就会被实例化,在使用的时候就不需要再去实例化,直接调用就可以了。常与privat ...
分类:
编程语言 时间:
2018-02-11 14:41:41
阅读次数:
194
垃圾收集器(Garbage Collection, GC)的诞生引导出了三个问题: 哪些内存需要回收? 什么时候回收? 如何回收? 对于线程独占的三个区域(程序计数器、虚拟机栈、本地方法栈)不用过多的考虑垃圾回收的问题,因为他们随着线程创建而生,随着线程结束而消失。然而Java堆和方法区则不一样,一 ...
分类:
编程语言 时间:
2018-02-10 01:17:05
阅读次数:
189
在前面谈到了一些关于内存模型以及并发编程中可能会出现的一些问题。下面我们来看一下Java内存模型,研究一下Java内存模型为我们提供了哪些保证以及在java中提供了哪些方法和机制来让我们在进行多线程编程时能够保证程序执行的正确性。在Java虚拟机规范中试图定义一种Java内存模型(Java Memo ...
分类:
编程语言 时间:
2018-02-08 15:39:40
阅读次数:
155
java虚拟机内存可以分为独占区和共享区。 独占区:虚拟内存栈、本地方法栈、程序计数器。 共享区:方法区、Java堆(用来存放对象实例)。 程序计数器 比较小的内存空间,当前线程所执行的字节码的行号指示器,如果执行的为java方法,那么计数器记录的是正在执行的虚拟机字节码指令的地址,如果方法是nat ...
分类:
编程语言 时间:
2018-02-07 17:06:19
阅读次数:
175
java字节码速查笔记 发表于 2018-01-27 | 阅读次数: 0 | 字数统计: | 阅读时长 ≈ | 字数统计: | 阅读时长 ≈ 执行原理 java文件到通过编译器编译成java字节码文件(也就是.class文件),这个过程是java编译过程;而我们的java虚拟机执行的就是字节码文件。 ...
分类:
编程语言 时间:
2018-02-07 17:05:21
阅读次数:
199