草庐IT

JVM 概述

全部标签

java - 最终静态与最终非静态字段和 JVM 优化

我很好奇JVM如何处理staticfinal字段。我看到一个类似的问题here但这不是我要找的。让我们考虑这样的例子:publicclassTestClassX{publicfinalintCODE_A=132;publicfinalintCODE_B=948;publicfinalintCODE_C=288;//someothercode}publicclassTestClassY{publicstaticfinalintCODE_A=132;publicstaticfinalintCODE_B=948;publicstaticfinalintCODE_C=288;//someoth

java - Spark SQL 失败,因为 "Constant pool has grown past JVM limit of 0xFFFF"

我在EMR4.6.0+Spark1.6.1上运行这段代码:valsqlContext=SQLContext.getOrCreate(sc)valinputRDD=sqlContext.read.json(input)try{inputRDD.filter("`first_field`isnotnullOR`second_field`isnotnull").toJSON.coalesce(10).saveAsTextFile(output)logger.info("DONE!")}catch{casee:Throwable=>logger.error("ERROR"+e.getMessa

java - 为什么必须将main方法声明为public...为什么JVM不能执行private main方法

通常我在各种书籍中发现main方法应该是公共(public)的,因为它应该对类加载器可见。但是JVM执行(或提供特殊处理)各种私有(private)方法,例如ObjectOutputStream中的readObject/writeObject方法。 最佳答案 很明显,您的程序的入口点应该是可见的。 关于java-为什么必须将main方法声明为public...为什么JVM不能执行privatemain方法,我们在StackOverflow上找到一个类似的问题:

jvm堆外内存排查详解

文章目录前言一、堆外内存排查1.背景2.内存对比3.堆外内存检查4.排查堆外内存5.glibc内存泄露结尾前言内存泄漏想必大家并不陌生,对于jvm的内存泄漏,有很多排查手段和方便的排查工具,例如MAL,但是对于非jvm的内存,如直接内存的使用,排查起来较为麻烦,下面介绍一下相关的排查手段一、堆外内存排查1.背景在一次内存检查的过程中,意外发现在linux的java进程内存占用,远高于jvm的内存设定最大值(堆+非堆),第一时间是考虑java可以采用直接内存,如mmap对内存进行使用,但经过排查,发现并非如此,下面看一下排查过程2.内存对比首先通过top,可以看到java进行使用了4.2g的内存

java - 有没有办法告诉 JVM 当前正在使用哪种 GC 算法

我正在使用Java5,我们的自定义服务器应用程序需要GC调整,因为有时我们会在高峰时段遇到15-20秒的暂停。我们在服务器类机器上运行Java5,其JVM参数如-server-d64有没有办法知道JVM当前使用的是哪种GC算法?http://docs.oracle.com/javase/1.5.0/docs/guide/vm/gc-ergonomics.html在运行服务器VM的服务器级机器上,垃圾收集器(GC)已从以前的串行收集器(-XX:+UseSerialGC)更改为并行收集器(-XX:+UseParallelGC).您可以通过对java命令使用-XX:+UseSerialGC命

java - 是否可以从不同的 JVM 调用 Java 应用程序中的方法?

当我第一次使用Apache守护进程为Windows开发Java服务时,我使用了我非常喜欢的JVM模式。您指定您的类和开始\停止(静态)方法。但是对于Linux,Jsvc看起来没有相同的选项。我真的很想知道为什么?!无论如何,如果我要使用Linux的init系统,我会尝试找到一种类似的方法来完成相同的行为,即以任何方式启动应用程序但要停止它,我将不得不调用一个方法在类里面。我的问题是,在jar启动后,我如何使用JVM库或其他任何东西来调用我的应用程序中的方法(这将尝试优雅地停止我的应用程序)。另一个问题,如果启动了一个应用程序并且该应用程序具有静态方法,如果我使用java命令行在一个应用

java - 多个 JVM 进程是否可以共享公共(public)类的内存?

我想在我的网络服务器上运行多个Java进程,一个用于每个网络应用程序。我正在使用具有大量支持类和jar文件的Web框架(Play),并且Java进程使用大量内存。一个Play进程显示大约225MB的“常驻私有(private)”内存。(我正在使用Java1.7.0_05在MacOSX上对此进行测试。)特定于应用程序的代码可能只有几MB。我知道典型的JavaWeb应用程序是添加到一个服务器进程(Tomcat等)的jars,但运行Play的标准方式似乎是作为一个独立的应用程序/进程。如果这些是C程序,那么这200MB中的大部分将是共享库,而不是在每个应用程序中重复。有没有办法在Java中实

java - Class对象A是在JVM加载A类时创建的,还是我调用A.class时创建的?

据我所知,每个类都有一个Class对象。我使用synchronize时有一种情况,例如:publicclassA{publicstaticvoidmain(String...args){synchronize(A.class){//dosomething...}}}这将锁定A的Class对象,对吗?这个Class对象是什么时候创建的?它是在JVM加载A类时创建的还是在我调用A.class时创建的?我在JLS中找不到详细信息,有人可以提供相关链接吗? 最佳答案 thiswilllockA'sClassobject,right?是的。m

java - 确保文件在 JVM 退出时被删除

File.deleteOnExit()是否保证即使JVM过早终止也能删除文件? 最佳答案 正如TimBender所说,File.deleteOnExit()不保证文件确实被删除。但是,在Unixish系统(例如Linux或OSX)上,可以在写入临时文件之前(但在打开它之后)将其删除。只要你为文件保留一个打开的描述符,你就可以继续读写它,即使目录树中不再存在该文件,操作系统也会自动回收文件使用的空间当你程序退出(或关闭文件的最后一个描述符)。这在Windows上不起作用,它具有不同的文件系统语义并且不允许删除打开的文件。但是,在可移植

java - JVM getObjectSize 示例

我在获取JVM中对象的大小时遇到​​了一些问题。JDK5提供了一个接口(interface)Instrumentation来通过premain()函数进行计算,但我不知道如何使用它。谁能帮帮我? 最佳答案 最简单和最有效的解决方案是使用非常小的sizeof库com.carrotsearchjava-sizeof0.0.3你需要用到这个http://grepcode.com/file/repo1.maven.org/maven2/com.carrotsearch/java-sizeof/0.0.2/com/carrotsearch/s