• Java 虚拟机规范中说明:所有的对象实例(all class instances)以及数组都要在堆上分配;

    • the heap is the runtime data area from which memory for all class instances and arrays is allocated.

0. 访问修饰符,static,栈内存

Java Error - Illegal Modifier for Parameter - Only final Permitted

  • 函数内的局部变量仅存在于栈内存上;

    • 局部变量不可用 public/private/protected、static 等词修饰;
    • 最多使用 final(only final permitted);
  • 栈内存上(局部对象)无所谓访问权限的概念;也即不可用 public/private/protected 等修饰符修饰函数内的局部变量;
  • static 修饰成员说明,所有类实例中仅存在一份;
    • 创建这些被 static 修饰的成员不需要类的实例化;
    • 因为栈上的对象都是 temporary 临时的,栈上对象也就无所谓 static 这一含义了;

1. JVM

从 .java 到 .class(字节码文件) 是 javac (java compiler)的工作,JVM 工作在 .class 文件在各个操作系统的平台上:

  • Interpreter for Mac/Windows/Linux,表示的是各操作系统平台上的字节码解释器(.class interpreter)
  • javac 使得 .java 文件(本地机器码)转变为字节码(.class)

2. java 运行时系统(Runtime System)

/

  • PC register:program counter register,程序计数器,只占据一块很小的内存空间,可将其看做是当前线程所执行的字节码(.class)的行号指示器。

    • 在虚拟机的概念模型里,字节码解释器(.class interpreter)工作时便是通过改变这个程序技术器的值来选择下一条要执行的字节码指令,分支、循环、跳转、异常处理、线程恢复等基础功能都需要依赖这个计数器来完成;
    • 在多线程环境下,java 虚拟机是通过线程轮流切换以及分配处理器执行时间的方式来实现(也即在任何一个确定时刻,一个处理器(多核处理器的一个内核)都只会执行一条线程中的指令),因此为了线程切换后能够恢复到正确的执行位置,每个线程都需要一个独立的程序计数器(program counter register),各条线程之间计数器互不影响,独立存储,称这类内存区域为“线程私有”的内存;
  • 执行引擎(execute engine)是 java 虚拟机最核心的组成成分。虚拟机是相对物理机而存在的,这两种执行器都有代码执行能力,其区别是物理机的执行引擎直接建立在处理器、硬件、指令集和操作系统层面,而虚拟机的执行引擎都是由自己实现的,因此可以自行制定指令集和执行引擎的结构体系,并且能够执行那些不被硬件直接支持的指令集格式;

Java 内存管理、JVM 工作原理与 Java 运行时系统的更多相关文章

  1. Java 详解 JVM 工作原理和流程

    Java 详解 JVM 工作原理和流程 作为一名Java使用者,掌握JVM的体系结构也是必须的.说起Java,人们首先想到的是Java编程语言,然而事实上,Java是一种技术,它由四方面组成:Java ...

  2. Java内存管理-JVM内存模型以及JDK7和JDK8内存模型对比总结(三)

    勿在流沙住高台,出来混迟早要还的. 做一个积极的人 编码.改bug.提升自己 我有一个乐园,面向编程,春暖花开! 上一篇分享了JVM及其启动流程,今天介绍一下JVM内部的一些区域,以及具体的区域在运行 ...

  3. 2017.10.24 Java 详解 JVM 工作原理和流程

    JVM工作原理和特点主要是指操作系统装入JVM是通过jdk中Java.exe来完成,通过下面4步来完成JVM环境. 1.创建JVM装载环境和配置 2.装载JVM.dll 3.初始化JVM.dll并挂界 ...

  4. (转)Java 详解 JVM 工作原理和流程

    作为一名Java使用者,掌握JVM的体系结构也是必须的.说起Java,人们首先想到的是Java编程语言,然而事实上,Java是一种技术,它由四方面组成:Java编程语言.Java类文件格式.Java虚 ...

  5. (摘录)Java 详解 JVM 工作原理和流程

    作为一名Java使用者,掌握JVM的体系结构也是必须的. 说起Java,人们首先想到的是Java编程语言,然而事实上,Java是一种技术,它由四方面组成:Java编程语言.Java类文件格式.Java ...

  6. Java内存管理 -JVM 垃圾回收

    版权声明:本文为博主原创文章,未经博主允许不得转载 一.概述 相比起C和C++的自己回收内存,JAVA要方便得多,因为JVM会为我们自动分配内存以及回收内存. 在之前的JVM 之内存管理 中,我们介绍 ...

  7. 【摘录】JAVA内存管理-JVM垃圾收集机制

    很多公司都有自己的JVM实现,被Oracle收购的sun公司开发的JVM实现名为HotSpot.这一实现是我们最常用到的. 还有哪些JVM实现呢?比较有名的有Oracle之前收购的BEA公司(就是以前 ...

  8. Java内存管理-掌握虚拟机类加载器(五)

    勿在流沙筑高台,出来混迟早要还的. 做一个积极的人 编码.改bug.提升自己 我有一个乐园,面向编程,春暖花开! 上一篇介绍虚拟机类加载机制,讲解了类加载机制中的三个阶段,分别是:加载.连接(验证.准 ...

  9. Java内存管理-掌握虚拟机类加载机制(四)

    勿在流沙筑高台,出来混迟早要还的. 做一个积极的人 编码.改bug.提升自己 我有一个乐园,面向编程,春暖花开! 上一篇介绍了整个JVM运行时的区域,以及简单对比了JDK7和JDK8中JVM运行时区域 ...

随机推荐

  1. xtu字符串 B. Power Strings

    B. Power Strings Time Limit: 3000ms Memory Limit: 65536KB 64-bit integer IO format: %lld      Java c ...

  2. hexo干货系列:(七)hexo安装统计插件

    前言 前面介绍了如何让百度和谷歌收录我们的博客,那如何查看自己的博客每天被多少人访问呢~ 这里我介绍下hexo中如何使用统计插件,每天看到自己的博客访问量越来越高也是一种享受. 正文 开启统计功能 我 ...

  3. UITableView点击背景

    系统自定义的点击背景有时间觉得效果不好想换个 - (void)setSelected:(BOOL)selected animated:(BOOL)animated { [super setSelect ...

  4. poj 3678 XOR和OR和AND(简单2-sat问题)

    /* 题意:给你一些边,每条边有一个值和一个运算符XOR OR AND求是否存在一些点使得所有的边根据这些运算符 可以符合条件的权值. 建边方式参考:http://blog.csdn.net/shua ...

  5. poj1470 Closest Common Ancestors [ 离线LCA tarjan ]

    传送门 Closest Common Ancestors Time Limit: 2000MS   Memory Limit: 10000K Total Submissions: 14915   Ac ...

  6. Android服务Service

    安卓Service服务 一    Service简介 Service是运行在后台的,没有界面的,用来处理耗时比较长的.Service不是一个单独的进程,也不是一个单独的线程. Service有两种类型 ...

  7. Back弹出AlertDialog

    package com.pingyijinren.helloworld.activity; import android.content.DialogInterface; import android ...

  8. c/s程序版本自动升级的问题,如何判断client端版本号是否最新,然后从指定ftp服务器down

    c/s程序版本自动升级的问题,如何判断client端版本号是否最新,然后从指定ftp服务器down http://blog.csdn.net/delphizhou/article/details/30 ...

  9. python之-微信开发学习

    微信公众平台技术文档https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1445241432# 注意,最好以python3 运行,中文 ...

  10. codeforces 875F(基环外向树)

    题意 有一个左边m个点,右边n个点的二分图(n,m<=1e5),左边每个点向右边恰好连两条权值相同的边. 求这个二分图的最优匹配 分析 对于这种二选一问题,即左边的a连向右边的b和c,权值为d, ...