昨天我简单的说了一下我的编程学习之路。假设你热爱编程。而不是仅为了赚钱,我想我的经历或许会给你带来一定的启示,假设你还没有看。请先慢慢读完我的编程学习之路,您肯定会有还有一番体会的。。

好了。废话不多说了。进入今天的主题。我想先介绍一下java。重栈和堆的角度还有jvm,假设你不是非常明确。那不要紧。在以后的文章中我还会提到。怎样你学过c和c++,那么你肯定对栈,堆内存理解的比較好。

我曾经写过一篇文章Java是一种什么语言。简单的介绍了一下java,今天这一块我就不多说了。。

我还是那helloworld举例吧。。

public class HelloWorld{
public static void main(String[] args){
System.out.println("hello world");
}
}

我想大家对着段代码是再熟悉只是了,今天我就来说一下它的存储。

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbWFya193aw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

变量就不多说了,大家看图一目了然。当new出来一个HelloWorld对象时。它就会存在堆区,先简单的说一下堆和栈吧。

栈与堆都是Java用来在Ram中存放数据的地方。与C++不同。Java自己主动管理栈和堆,程序猿不能直接地设置栈或堆。

Java的堆是一个执行时数据区,类的(对象从中分配空间。

这些对象通过new、newarray、anewarray和 multianewarray等指令建立。它们不须要程序代码来显式的释放。

堆是由垃圾回收来负责的,堆的优势是能够动态地分配内存大小。生存期也不必事 先告诉编译器,由于它是在执行时动态分配内存的,Java的垃圾收集器会自己主动收走这些不再使用的数据。但缺点是,由于要在执行时动态分配内存,存取速度较 慢。

栈的优势是,存取速度比堆要快。仅次于寄存器,栈数据能够共享。

但缺点是。存在栈中的数据大小与生存期必须是确定的。缺乏灵活性。栈中主要存放一 些基本类型的变量(,int, short, long, byte, float, double, boolean, char)和对象句柄。

再来说一下载入helloworld的时候吧,我们首先得把原代码编译成字节码。然后有jvm载入到内存并执行得到输出结果。

关于jvm载入类的机理比較复杂。我会在以后的文章中再写的。。

欢迎关注我的微博 
,我的微博会实时更新文章。  交流群:

199326422

浅析java(多方面解读)的更多相关文章

  1. 浅析Java中的final关键字

    浅析Java中的final关键字 谈到final关键字,想必很多人都不陌生,在使用匿名内部类的时候可能会经常用到final关键字.另外,Java中的String类就是一个final类,那么今天我们就来 ...

  2. 浅析Java.lang.Process类

    一.概述      Process类是一个抽象类(所有的方法均是抽象的),封装了一个进程(即一个执行程序).      Process 类提供了执行从进程输入.执行输出到进程.等待进程完成.检查进程的 ...

  3. 浅析Java中的访问权限控制

    浅析Java中的访问权限控制 今天我们来一起了解一下Java语言中的访问权限控制.在讨论访问权限控制之前,先来讨论一下为何需要访问权限控制.考虑两个场景: 场景1:工程师A编写了一个类ClassA,但 ...

  4. [转载]浅析Java中的final关键字

    浅析Java中的final关键字 谈到final关键字,想必很多人都不陌生,在使用匿名内部类的时候可能会经常用到final关键字.另外,Java中的String类就是一个final类,那么今天我们就来 ...

  5. 浅析JAVA设计模式之工厂模式(一)

    1 工厂模式简单介绍 工厂模式的定义:简单地说,用来实例化对象,取代new操作. 工厂模式专门负责将大量有共同接口的类实例化.工作模式能够动态决定将哪一个类实例化.不用先知道每次要实例化哪一个类. 工 ...

  6. 浅析java内存管理机制

    内存管理是计算机编程中的一个重要问题,一般来说,内存管理主要包括内存分配和内存回收两个部分.不同的编程语言有不同的内存管理机制,本文在对比C++和Java语言内存管理机制的不同的基础上,浅析java中 ...

  7. 【转】浅析Java中的final关键字

    谈到final关键字,想必很多人都不陌生,在使用匿名内部类的时候可能会经常用到final关键字.另外,Java中的String类就是一个final类,那么今天我们就来了解final这个关键字的用法. ...

  8. 浅析 java ArrayList

    浅析 java ArrayList 简介 容器是java提供的一些列的数据结构,也可以叫语法糖.容器就是用来装在其他类型数据的数据结构. ArrayList是数组列表所以他继承了数组的优缺点.同时他也 ...

  9. [转帖]浅析java程序的执行过程

    浅析java程序的执行过程 转帖来源: https://www.cnblogs.com/wangjiming/p/10315983.html 之前学习过 这一块东西 但是感觉理解的不深刻. copy一 ...

  10. 浅析java修饰符之public default protected private static final abstract

    浅析java修饰符之public default protected private static final abstract 一   修饰符的作用:用来定义类.方法或者变量,通常放在语句的最前端 ...

随机推荐

  1. [转载]MyBatis mapper文件中的变量引用方式#{}与${}的差别

    转载自:http://blog.csdn.net/szwangdf/article/details/26714603 默认情况下,使用#{}语法,MyBatis会产生PreparedStatement ...

  2. 00PostgreSQL

    PostgreSQL PostgreSQL: The World's Most Advanced Open Source Relational Database;PostgreSQL是一个功能强大的开 ...

  3. 【C语言】控制台窗口图形界面编程(六):光标设置

    目录 00. 目录 01. CONSOLE_CURSOR_INFO结构 02. GetConsoleCursorInfo函数 03. SetConsoleCursorInfo函数 04. SetCon ...

  4. 第3节 hive高级用法:13、hive的函数

    4.2.Hive参数配置方式 Hive参数大全: https://cwiki.apache.org/confluence/display/Hive/Configuration+Properties 开 ...

  5. 在前后端分离的SpringBoot项目中集成Shiro权限框架

    参考[1].在前后端分离的SpringBoot项目中集成Shiro权限框架 参考[2]. Springboot + Vue + shiro 实现前后端分离.权限控制   以及跨域的问题也有涉及

  6. Python:安装3.6

    centos7 自带有 python,但是却是 python2 版本的 python,如果你想安装个python3怎么办呢?难道要从github上把源码clone下来进行编译安装么?没错!因为 yum ...

  7. Django之初

    Django之初 Django的开始: #安装Django: pip3 install django #创建Django项目: django-admin startproject 项目名 #比如: d ...

  8. python的学习之路(三)

    一.set集合#!/usr/bin/env python# *_*coding:utf-8 *_*# Author: harson old_dict = { "#1": {'hos ...

  9. 77-CCI,Commodity Channel Index,商品通道指标.(2015.7.1)

    CCI,Commodity Channel Index 商品通道指标 Channel Index,商品通道指标.(2015.7.1)" title="77-CCI,Commodit ...

  10. PAT顶级 1002. Business (35)

    PAT顶级 1002. Business (35) As the manager of your company, you have to carefully consider, for each p ...