#!/bin/sh # # Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved. # ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. # # resolve symlinks # PRG=$0 while [ -h "$PRG" ]; do ls=`ls -ld "$PRG"` link=`expr "$ls" : '^.*-> \(.*\)$' 2>/dev/null` if expr "$link" : '^/' 2> /dev/null >/dev/null; then PRG="$link" else PRG="`dirname "$PRG"`/$link" fi done progdir=`dirname "$PRG"` old=`pwd` cd "$progdir"/.. basedir=`pwd` cd "$old" case "`uname`" in Darwin*) # set default userdir and cachedir on Mac OS X DEFAULT_USERDIR_ROOT="${HOME}/Library/Application Support/VisualVM" DEFAULT_CACHEDIR_ROOT=${HOME}/Library/Caches/VisualVM ;; *) # set default userdir and cachedir on unix systems DEFAULT_USERDIR_ROOT=${HOME}/.visualvm DEFAULT_CACHEDIR_ROOT=${HOME}/.cache/visualvm ;; esac if [ -f "$progdir"/../lib/visualvm/etc/visualvm.conf ] ; then visualvm_jdkhome="$basedir" old=`pwd` cd "$progdir/../lib/visualvm/" basedir=`pwd` cd "$old" . "$progdir"/../lib/visualvm/etc/visualvm.conf elif [ -f "$progdir"/../etc/visualvm.conf ] ; then . "$progdir"/../etc/visualvm.conf fi export DEFAULT_USERDIR_ROOT # #68373: look for userdir, but do not modify "$@" userdir="${visualvm_default_userdir}" cachedir="${visualvm_default_cachedir}" founduserdir="" for opt in "$@"; do if [ "${founduserdir}" = "yes" ]; then userdir="$opt" break elif [ "$opt" = "--userdir" ]; then founduserdir="yes" fi done foundcachedir="" for opt in "$@"; do if [ "${foundcachedir}" = "yes" ]; then cachedir="$opt" break elif [ "$opt" = "--cachedir" ]; then foundcachedir="yes" fi done if [ -f "${userdir}"/etc/visualvm.conf ] ; then . "${userdir}"/etc/visualvm.conf fi if [ ! -f "$basedir"/etc/visualvm.clusters ]; then echo Cannot read cluster file: "$basedir"/etc/visualvm.clusters 1>&2 exit 1 fi readClusters() { grep -v "^#" "$basedir"/etc/visualvm.clusters | grep -v "^$" | grep -v platform | while read X; do if expr "$X" : "/.*" >/dev/null; then echo "$X" else echo "$basedir/$X" fi done } absolutize_paths() { while read path; do if [ -d "$path" ]; then (cd "$path" 2>/dev/null && pwd) else echo "$path" fi done } visualvm_clusters=`readClusters | absolutize_paths | tr '\012' ':'` if [ ! -z "$visualvm_extraclusters" ] ; then visualvm_clusters ="$visualvm_clusters:$visualvm_extraclusters" fi heap_size () { mem=640 case "`uname`" in Linux*) mem=`cat /proc/meminfo | grep MemTotal | tr -d [:space:][:alpha:]:` mem=`expr $mem / 1024` ;; SunOS*) mem=`/usr/sbin/prtconf | grep Memory | /usr/bin/tr -dc '[0-9]'` ;; Darwin*) mem=`/usr/sbin/sysctl hw.memsize | tr -d [:alpha:][:space:].:` mem=`expr $mem / 1048576` ;; *) ;; esac if [ -z "$mem" ] ; then mem=640 fi mem=`expr $mem / 5` if [ $mem -gt 768 ] ; then mem=768 elif [ $mem -lt 96 ] ; then mem=96 fi max_heap_size=$mem return 0 } if grep -v -- "-J-Xmx" >/dev/null </dev/null </dev/null; then echo $X/lib/nbexec elif [ -f "$progdir"/../$X/lib/nbexec ]; then echo "$progdir"/../$X/lib/nbexec fi done | head -n 1` if [ \! -n "$nbexec" ] ; then nbexec="$basedir"/platform/lib/nbexec fi sh=sh # #73162: Ubuntu uses the ancient Bourne shell, which does not implement trap well. if [ -x /bin/bash ] then sh=/bin/bash fi if [ "${founduserdir}" = "yes" ]; then exec $sh "$nbexec" "$@" else if [ "${foundcachedir}" = "yes" ]; then exec $sh "$nbexec" --userdir "${userdir}" "$@" else exec $sh "$nbexec" --userdir "${userdir}" --cachedir "${cachedir}" "$@" fi fi } # in case of macosx, the apple.laf.useScreenMenuBar property should be ideally in the Info.plist file # but it doesn't get propagated into the executed java VM. case "`uname`" in Darwin*) eval launchNbexec \ --jdkhome '"$visualvm_jdkhome"' \ -J-Dcom.apple.mrj.application.apple.menu.about.name=VisualVM \ -J-Xdock:name=VisualVM \ '"-J-Xdock:icon=$basedir/etc/visualvm.icns"' \ --branding visualvm \ --clusters '"$visualvm_clusters"' \ ${visualvm_default_options} \ '"$@"' ;; *) eval launchNbexec \ --jdkhome '"$visualvm_jdkhome"' \ --branding visualvm \ --clusters '"$visualvm_clusters"' \ ${visualvm_default_options} \ '"$@"' ;; esac