`

JAVA调优总结(一)转

    博客分类:
  • JAVA
 
阅读更多
数据类型

    Java虚拟机中,数据类型可以分为两类:基本类型和引用类型。

基本类型的变量保存原始值,即:他代表的值就是数值本身;
而引用类型的变量保存引用值。“引用值”代表了某个对象的引用,而不是对象本身,对象本身存放在这个引用值所表示的地址的位置。

基本类型包括:byte,short,int,long,char,float,double,Boolean,returnAddress
引用类型包括:类类型,接口类型和数组。

堆与栈


    堆和栈是程序运行的关键,很有必要把他们的关系说清楚。

  
为什么要把堆和栈区分出来呢?栈中不是也可以存储数据吗?
    第一,从软件设计的角度看,栈代表了处理逻辑,而堆代表了数据。这样分开,使得处理逻辑更为清晰。分而治之的思想。这种隔离、模块化的思想在软件设计的方方面面都有体现。
    第二,堆与栈的分离,使得堆中的内容可以被多个栈共享(也可以理解为多个线程访问同一个对象)。这种共享的收益是很多的。一方面这种共享提供了一种有效的数据交互方式(如:共享内存),另一方面,堆中的共享常量和缓存可以被所有栈访问,节省了空间。
    第三,栈因为运行时的需要,比如保存系统运行的上下文,需要进行地址段的划分。由于栈只能向上增长,因此就会限制住栈存储内容的能力。而堆不同,堆中的对象是可以根据需要动态增长的,因此栈和堆的拆分,使得动态增长成为可能,相应栈中只需记录堆中的一个地址即可。
    第四,面向对象就是堆和栈的完美结合。其实,面向对象方式的程序与以前结构化的程序在执行上没有任何区别。但是,面向对象的引入,使得对待问题的思考方式发生了改变,而更接近于自然方式的思考。当我们把对象拆开,你会发现,对象的属性其实就是数据,存放在堆中;而对象的行为(方法),就是运行逻辑,放在栈中。我们在编写对象的时候,其实即编写了数据结构,也编写的处理数据的逻辑。不得不承认,面向对象的设计,确实很美。

在Java中,Main函数就是栈的起始点,也是程序的起始点。
    程序要运行总是有一个起点的。同C语言一样,java中的Main就是那个起点。无论什么java程序,找到main就找到了程序执行的入口:)

堆中存什么?栈中存什么?
    堆中存的是对象。栈中存的是基本数据类型和堆中对象的引用。一个对象的大小是不可估计的,或者说是可以动态变化的,但是在栈中,一个对象只对应了一个4btye的引用(堆栈分离的好处:))。
    为什么不把基本类型放堆中呢?因为其占用的空间一般是1~8个字节——需要空间比较少,而且因为是基本类型,所以不会出现动态增长的情况——长度固定,因此栈中存储就够了,如果把他存在堆中是没有什么意义的(还会浪费空间,后面说明)。可以这么说,基本类型和对象的引用都是存放在栈中,而且都是几个字节的一个数,因此在程序运行时,他们的处理方式是统一的。但是基本类型、对象引用和对象本身就有所区别了,因为一个是栈中的数据一个是堆中的数据。最常见的一个问题就是,Java中参数传递时的问题。


Java中的参数传递时传值呢?还是传引用?
    要说明这个问题,先要明确两点:
         1. 不要试图与C进行类比,Java中没有指针的概念
         2. 程序运行永远都是在栈中进行的,因而参数传递时,只存在传递基本类型和对象引用的问题。不会直接传对象本身。





















  • 大小: 15.5 KB
分享到:
评论

相关推荐

    JVM调优总结 JVM调优总结

    ### JVM调优总结 #### 一、概述 Java虚拟机(JVM)是Java程序的核心运行环境,对于提高Java应用程序性能至关重要。JVM调优是指通过调整JVM的配置参数来优化程序性能的过程。本文将围绕JVM调优展开讨论,重点分析数据...

    阿里+Java+开发手册、阿里巴巴Java性能调优实战

    阿里巴巴作为全球领先的科技企业,在Java开发和性能调优方面积累了丰富的实践经验,并将这些知识和经验总结提炼,编写成了《阿里+Java+开发手册、阿里巴巴Java性能调优实战》两本专业书籍。它们分别以嵩山版和华山版...

    阿里巴巴Java性能调优实战(2021华山版)

    作者通过一个故事,讲述了如何在实际项目中遇到性能问题,并通过自己的经验总结出了性能调优的重要性。 性能调优的挑战 性能调优是一项非常复杂的技术,需要开发者具备广度和深度的技术知识。互联网时代,一个简单...

    JVM调优总结PDF,带原理图

    JVM调优是一个复杂而细致的过程,涉及对内存管理、垃圾回收等多个方面的综合考量。理解不同的垃圾回收算法及其适用场景是提高Java应用程序性能的关键。通过合理选择和配置垃圾回收器,可以显著提升系统的响应速度和...

    Java-JVM调优总结

    ### Java-JVM调优总结 #### 一、引言 在现代软件开发中,Java 作为一种广泛使用的编程语言,其应用程序的性能优化至关重要。而 JVM(Java Virtual Machine)作为 Java 程序运行的基础环境,对其进行合理的调优可以...

    Java调优中一些概念的总结

    Java调优中一些概念的总结,如堆与栈,Java对象的大小,引用类型等

    java性能调优的基本知识.pdf

    总之,Java性能调优是一个复杂且细致的过程,需要结合实际应用场景,深入理解JVM的工作原理,以及垃圾收集和内存管理策略。通过合理的配置和持续的测试,可以显著提升程序的运行效率。对于那些寻求极致性能的开发者...

    阿里巴巴Java性能调优实战(2021华山版).docx

    本资源提供了一份阿里巴巴Java性能调优实战指南,旨在帮助Java开发者提高系统性能。该指南共分七大模块,每个模块都涵盖了Java应用服务的不同方面的性能优化。 第一个模块概述了性能调优的重要性,并为开发者提供了...

    JVM性能调优总结.docx

    JVM性能调优总结 JVM性能调优是Java开发中非常重要的一方面,直接影响到系统的性能和稳定性。本文将总结JVM性能调优的经验和技巧,并提供一些实用的配置参数和建议。 一、堆大小设置 堆大小是JVM性能调优中的一个...

    JVM调优总结 -Xms -Xmx -Xmn -Xss

    JVM调优总结 -Xms -Xmx -Xmn -Xss JVM 调优是 Java virtual machine 的性能优化,通过调整 JVM 的参数来提高 Java 应用程序的性能。其中,-Xms、-Xmx、-Xmn、-Xss 是四个重要的参数,分别控制 JVM 的初始堆大小、...

    tomcat性能调优总结

    "Tomcat性能调优总结" Tomcat性能调优是指对 Tomcat 服务器的性能进行调整和优化,以提高其处理能力和响应速度。Tomcat 的性能调整可以分为两类:外部环境调整和自身调整。外部环境调整包括调整非 Tomcat 组件,如...

    JVM调优总结1-12.docx

    JVM调优总结 JVM(Java Virtual Machine)是 Java 语言的运行环境,负责将 Java 字节码转换为机器码并执行。然而,随着 Java 应用程序的复杂度和规模的增加,JVM 的性能变得越来越重要。因此,JVM 调优是非常必要的...

    JVM调优总结(4)分代垃圾回收Java开发Java经验技

    本篇文章将详细讲解"JVM调优总结(4)分代垃圾回收"这一主题,旨在帮助Java开发者掌握更加高效、稳定的应用运行策略。 一、分代垃圾回收理论基础 Java的内存管理主要依靠垃圾回收机制,它自动回收不再使用的对象,...

    非常好用的java调优工具Jprofile

    Java性能优化是开发和运维过程中不可或缺的一环,而JProfiler是一款强大的Java调优工具,它提供了详尽的性能分析和内存管理功能,帮助开发者找出应用程序的瓶颈,提升系统效率。以下将详细介绍JProfiler的主要功能、...

    JVM调优总结.pdf

    ### JVM调优总结知识点 #### 一、Java虚拟机中的数据类型 在Java虚拟机(JVM)中,数据类型主要分为两大类:基本类型和引用类型。 - **基本类型**:这类变量直接保存原始值,例如整数、浮点数等。在JVM中,基本类型...

    JVM调优总结(mht)

    JVM调优总结 --收集某位高人的博客.

    JAVA虚拟机性能参数调优指导书.doc

    4. **JAVA应用性能测试调优经验总结** - **GC调优参数的使用**:调整垃圾收集器参数,如-XX:MaxTenuringThreshold控制对象晋升老年代的阈值,-XX:GCTimeRatio设置垃圾收集时间占总运行时间的比例,可以减少停顿时间...

    JAVA虚拟机性能参数调优指导书

    #### JAVA应用性能测试调优经验总结 1. **GC调优参数的使用**:垃圾收集器的选择和配置对应用性能有重大影响。例如,使用-XX:+UseG1GC启用G1垃圾收集器,适用于大内存的应用场景;调整-XX:MaxGCPauseMillis以减少GC...

Global site tag (gtag.js) - Google Analytics